重学设计模式 - Strategy模式
来源:互联网 发布:淘宝开店要两个银行卡 编辑:程序博客网 时间:2024/03/29 10:25
1、Strategy模式简介
《设计模式》一书中对Stragety模式的意图是这样叙述的:
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。
Strategy模式以下面几条原则为基础:
1) 对象都具有职责;
2) 这些职责不同的具体实现是通过多态的使用完成的;
3) 概念上相同的算法具有多个不同的实现,需要进行管理。
2、Strategy模式关键特征
意图
可以根据所处上下文,使用不同的业务规则或算法
问题
对所需算法的选择取决于发出请求的客户或者要处理的数据。如果只有一些不会变化的算法,就不需要Strategy模式。
解决方案
将对算法的选择和算法的实现相分离。允许根据上下文进行选择。
参与者与协作者
1、 Strategy指定了如何使用不同的算法。
2、 各ConcreteStrategy实现了这些不同的算法。
3、 Context通过类型为Strategy的引用使用具体的ConcreteStrategy。Strategy与Context相互作用以实现所选的算法(有时候Strategy必须查询Context)。Context将来自Client的请求转发给Strategy。
效果
1、 Strategy模式定义了一系列的算法。
2、 可以不使用switch语句或条件语句
3、 必须以相同的方式调用所有的算法(它们必须拥有相同的接口)。个ConcreteStrategy与Context之间的相互作用可能需要在Context中加入获取状态的方法。
实现
让使用算法的类(Context)包含一个抽象类(Strategy),该抽象类拥有一个抽象方法指定如何调用算法。每个派生类按需要实现算法。
(在原型Strategy模式中,选择所用具体实现的职责有Client对象承担,并转给Strategy模式的Context对象)
- 重学设计模式 - Strategy模式
- 设计模式-Strategy 模式
- 设计模式 - Strategy模式
- 设计模式--Strategy 模式
- 讲故事学设计模式-策略(Strategy)模式
- 重学设计模式 - Facade模式
- 重学设计模式 - Adapter模式
- 重学设计模式 - Bridge模式
- 重学设计模式 - Abstract Factory模式
- 重学设计模式 - Decorator模式
- 重学设计模式 - Observer模式
- 重学设计模式 - Template Method模式
- 重学设计模式 - Object Pool模式
- 重学设计模式 - Factory Method模式
- 重学设计模式 - Builder模式
- 重学设计模式 - Prototype模式
- 重学设计模式(一) -- 工厂模式
- Strategy设计模式
- this application has requested the runtime to terminate it in an unusual way
- MFC框架类、文档类、视图类相互访问的方法
- 安装arm-elf-tools-20030314.sh 的问题的解决方法
- 【C语言】 计数、求和、求阶乘等简单算法
- Java Native Methods 例子
- 重学设计模式 - Strategy模式
- build/envsetup.sh 简介
- wchar_t与char(系统默认编码集,非UTF8)的转换
- tiny210 ubuntu 1104 编译过程
- d-pointer
- 介绍linux中的程序
- arm-elf-tools -20040427.sh 下载及安装问题的解决
- Iphone自定义UITableViewCell
- IOC 与 好莱坞原则(和回调和观察者模式比较类似)