今天研究了一下策略模式,策略模式(Strategy)定义了一个算法家族,对每个算法分别封装成为一个单独的类,让他们之间可以相互的替换,此模式让算法的变化不会影响到使用算法的客户,可以减少了各种算法类与使用算法类之间的耦合。策略模式包含Strategy、context两个模块,Strategy为Context定义可一系列可供重用的算法或行为,继承有助于析取出这些算法中的公用功能。
策略模式就是用来封装算法的,在实践中,我们可以用它来封装几乎封装任何类型的规则,只要在分析过程中需要在不同时间应用不同的业务规则,就可以考虑用策略模式处理这种变化的可能性。
在策略模式中,选择所用具体实现的职责有客户端负责,然后转给策略模式的Context对象。
策略模式的UML类图:
分析对比策略模式和简单工厂设计模式,我们可以发现,这两个设计模式的用法思路非常相似,唯一的不同之处就是,对于简单工厂设计模式来讲,选择具体实现方法是由工厂类Factory来负责,而在策略模式中是由客户端程序来负责的。因此,为了即达到定以算法家族实现独立算法的目的,又可以不让客户端来负责具体实现的选择,在具体的实践项目中我们可以将简单工厂设计模式与策略模式结合起来使用。
分享到:
相关推荐
【Java设计模式】(2)策略模式Strategy
2009-03-9 策略模式Strategy:当解决一个问题的途径(策略)有很多种的时候,每一种处理方式都可以做为一种处理策略,通过管理类来切换调用不同的策略。
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。...
C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载
使用Java实现不同排序算法的策略模式的代码。
主要介绍了PHP设计模式之 策略模式Strategy,结合实例形式详细分析了PHP基于对象行为型的策略模式Strategy具体原理、实现技巧与相关操作注意事项,需要的朋友可以参考下
走进设计模式之 策略模式(Strategy) 代码
设计模式C++学习之策略模式(Strategy)
策略模式思想简单实现,初学者可看看。 设计模式 策略模式 Strategy
设计模式 策略模式。金典模式之策略模式代码。
strategy策略模式源码 策略模式源码 策略模式源码 策略模式源码
设计模式-策略模式(Strategy)结合Android小知识讲解,简单明了
1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式...
这种设计模式比较常用,希望能够帮助到大家。
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each ...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第23节:行为型模式Strategy策略模式
Factory:在JDK中遍地都是,比如JDBC、JNDI等,是学习Spring的基础 命令模式 Command:Struts框架的基石 单例模式 Singleton:最简单的设计模式,大量框架都使用了它 策略模式 Strategy:java.util....
C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式