策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
策略模式UML图如下:
举例:
游泳池中有不同种类的鸭子,有绿头鸭,红头鸭,橡皮鸭,木头鸭等。不同鸭子的特征或行为不同。绿头鸭(MallardDuck)可以叫声是“quack”,会飞;橡皮鸭叫声是“queak”,不会飞;木头鸭不会叫,...
分类:
编程语言 时间:
2014-06-20 11:54:02
阅读次数:
220
策略模式(Strategy
Pattern):定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 设计原则
1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 2.针对接口编辑,而不是针对实现编程。 3.多用组合,少用继承。...
分类:
其他好文 时间:
2014-06-12 14:22:35
阅读次数:
292
策略模式:定义算法家族,分别封装,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户简单描述:一个父类,多个子类实现具体方法。一个Context类持有父类的引用(使用子类实例化此引用),客户端代码只需要与此Context类交互即可大话设计模式中的截图:例子代码:策略类:1
packa...
分类:
编程语言 时间:
2014-06-11 21:51:46
阅读次数:
455
1. 概述
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。2. 应用场景
(1)多个类只区别在表现行为不同,在运行时动态选择具体要执行的行...
分类:
其他好文 时间:
2014-06-11 11:54:06
阅读次数:
210
1.代码设计思路:一个总接口:规范策略执行方法一个代理类:将接口作为类的私有化变量,初始化构造多个普通接口实现类:具体实现策略方法一个方法执行类:将代理类通过构造函数初始化实现类,实现方法的执行2.模式优点:高内聚低耦合3.利用面向接口编程的思想
通过对接口的操纵 事实上实现了对实现类的具体业务执行...
分类:
其他好文 时间:
2014-06-11 10:28:34
阅读次数:
283
/* * 环境(Context)角色:持有一个Strategy类的引用。 *
抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。 *
具体策略(ConcreteStrategy)角色:包装了相关的算法或...
分类:
其他好文 时间:
2014-06-09 18:50:59
阅读次数:
208
行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法、访问者模式,我去,好多。。。下面主要挑选几个比较容易混淆且比较重要的模式进行对比说明。一、命令模式VS策略模式1、关注点不同策略模式关注的是算法替换的问题:一个新的算法投产,...
分类:
其他好文 时间:
2014-06-09 13:01:50
阅读次数:
236
Head First设计模式中介绍策略模式时以Duck类作为例子,其中用flyBehavior和quackBehavior两个接口引用变量代表鸭子飞行和鸭子叫这两种行为,通过改变flyBehavior和quackBehavior来满足不同的Duck子类的不同行为,这样带来的好处就是可以在运行时改变Duck子类的行为。下面是我用C++改写的代码。...
分类:
编程语言 时间:
2014-06-08 09:13:14
阅读次数:
243
策略模式
策略模式定义一系列的算法,并将每个算法进行封装,而且使他们可以相互替换,是算法与客户端(调用者)隔离开来,可以独立变化。应用场景
多个类只是表现行为不同,在运行时根据需要动态选择执行的算法 客户端需要在不同情况下调用不同的算法,或者在将来算法可能会被改变 算法对于客户端隐藏全部实现...
分类:
其他好文 时间:
2014-06-07 07:12:51
阅读次数:
190