《设计模式解析》摘录(6)
来源:互联网 发布:如何申请域名邮箱 编辑:程序博客网 时间:2024/06/11 21:53
Strategy 模式
定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。Strategy 模式使算法可独立于使用它的客户而变化。
基础原则:
1、对象都具有职责;
2、这些职责不同的具体实现是通过多态的使用完成的;
3、概念上相同的算法具有多个不同的实现,需要进行管理。
将问题域中的各个行为互相分离开来——也就是说将它们解耦,是一个好的设计实践。这使我们可以修改负责某一行为的类,不会对其他类产生不良影响。
关键特征:
意图:可以根据所处上下文,使用不同的业务规则或算法。
问题:对所需算法的选择取抉于发出请求的客户或者要处理的数据。如果只有一些不会变化的算法,就不需要 Strategy 模式。
解决方案:将对算法的选择和算法的实现相分离,允许根据上下文进行选择。
参与者于协作者:
1、Strategy 指定了如何用不同的算法;
2、各 ConcreteStrategy 实现了这些不同的算法;
3、Context 通过类型为 Strategy 的引用使用具体的 ConcreteStrategy。 Strategy 与 Context 相互作用以实现所选的算法(有时候 Strategy 必须查询 Context)。Context 将来自 Client 的请求转发给 Strategy。
实现:让使用算法的类(Context)包含一个抽象类(Strategy),该抽象类有一个抽象方法指定如何调用算法。每个派生类按需要实现算法。
注意:在原型 Strategy 模式中,选择所用具体实现的职责由 Client 对象承担,并转给 Strategy 模式的 Context对象。
- 《设计模式解析》摘录(6)
- 《设计模式解析》摘录(1)
- 《设计模式解析》摘录(2)
- 《设计模式解析》摘录(3)
- 《设计模式解析》摘录(4)
- 《设计模式解析》摘录(5)
- 《设计模式解析》摘录(7)
- 《设计模式解析》摘录(8)
- 《设计模式解析》摘录(9)
- 《设计模式解析》摘录(10)
- 《设计模式解析》摘录(11)
- 《设计模式解析》摘录(12)
- 《设计模式解析》摘录(13)
- 《设计模式解析》摘录(14)
- 《设计模式解析》摘录(15)
- 《设计模式解析》摘录(16)
- 《设计模式解析》摘录(17)
- 设计模式解析------笔记,摘录
- CSDN blog的一个bug
- 漫谈业务规则管理(1)
- Datalist控件,Repeater控件如何分页?
- 赶论文
- 昨天才提醒,今天就有网友点击QQ信息中的网址,中Worm.Viking.pk/Worm.Win32.Viking.jg了
- 《设计模式解析》摘录(6)
- ASP.net Logion用户登陆验证代码
- asp.net 对xml文件的读写,添加,修改,删除操作
- Blog访问量即将达到20000,感谢大家的捧场
- ASP.net中太长的数据缩略显示
- const 用法总结
- 300 dvdrip xvid 20th
- ImageMagick 示例
- HelixServer 11 for Linux