面向对象设计模式--策略模式Strategy
2013-10-14 14:15
309 查看
策略模式的UML类图(VS2013 C++版本):
策略模式的重点:每个策略对象封装一个算法,有多少个算法就有多少个对象。策略模式的意图是封装算法。要从“抽象不仅面对状态(字段、属性)还面对行为(算法、函数)”这个概念来理解策略模式。
策略模式实现的关键:
1、将一组相关(名称、目的相关),但是具体实现又不同的算法抽象到一个接口里面(Compositor.Compose),子类SimpleCompositor和TeXCompositor去实现各自的Compose方法。
2、上下文类(Composition)使用一个策略的接口\抽象类的对象(Composition._compositor)作为入口来操作具体的策略子类。这也是上下文类和策略类传递数据的一种方式。在main函数中,构造上下文类对象的时候,构造函数接收一个策略接口\抽象类对象作为参数。
3、使用具体策略子类对象作为参数来构造上下文类,目的是初始化其内部包含的策略接口\抽象类对象(Composition._compositor):
Composition* quick = new Composition(new SimpleCompositor);
4、main函数中使用Composition对象来调用具体的算法。而选择哪种算法是申明伤心为你类对象的时候就定义好的。
quick->Repair();
C++(VS2012 VS2013) 源码下载
策略模式的重点:每个策略对象封装一个算法,有多少个算法就有多少个对象。策略模式的意图是封装算法。要从“抽象不仅面对状态(字段、属性)还面对行为(算法、函数)”这个概念来理解策略模式。
策略模式实现的关键:
1、将一组相关(名称、目的相关),但是具体实现又不同的算法抽象到一个接口里面(Compositor.Compose),子类SimpleCompositor和TeXCompositor去实现各自的Compose方法。
2、上下文类(Composition)使用一个策略的接口\抽象类的对象(Composition._compositor)作为入口来操作具体的策略子类。这也是上下文类和策略类传递数据的一种方式。在main函数中,构造上下文类对象的时候,构造函数接收一个策略接口\抽象类对象作为参数。
3、使用具体策略子类对象作为参数来构造上下文类,目的是初始化其内部包含的策略接口\抽象类对象(Composition._compositor):
Composition* quick = new Composition(new SimpleCompositor);
4、main函数中使用Composition对象来调用具体的算法。而选择哪种算法是申明伤心为你类对象的时候就定义好的。
quick->Repair();
C++(VS2012 VS2013) 源码下载
相关文章推荐
- [导入]C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式.zip(8.00 MB)
- [.net 面向对象程序设计深入](26)实战设计模式——策略模式 Strategy (行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 面向对象设计模式之策略模式
- 设计模式---策略模式Strategy(对象行为型)
- 设计模式之七:Strategy(策略)—对象行为型模式
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式-策略模式---Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- C#面向对象模式设计第二十三讲:Startegy 策略模式(行为型模式)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)