23种设计模式(Template模式/Strategy模式)
2015-04-05 09:09
141 查看
1、问题场景
场景: 在面向对象那个设计实现中,比如某一个业务逻辑在不同的细节中有不同的实现,但是逻辑的框架是一致的,
问题: 通过继承或者组合怎么来设计逻辑框架?
2、解决办法
模板模式:定义操作算法的一个骨架,而将这些操作步骤延迟到子类当中,使得子类可以根据需要重新定义算法执行步骤(算法可理解为业务流程)
策略模式:将逻辑封装到一个个类中,通过组合的方式实现具体的业务流程,再通过委托的方式将抽象接口的实现委托给组合对象实现。
UML图
![](http://img.blog.csdn.net/20150405092251841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VpaV9qaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
两种模式的优缺点:模板模式--易于修改和扩展那些被复用的实现;破坏了封装性,继承父类中的实现细节暴露给了子类,父类更改时不得不更改子类,弗雷继承的实现在运行期间不能改变。
策略模式--“黑盒”复用,被包含的对象细节外部不可见,封装性好;但是系统中对象过多。
备注:在面向对象的设计当中有一条法则--优先使用组合,而非继承。
---------------------------------------------------------------------------
Name:一个奔跑中的loser
E-mail:chenfeiyoucan@163.com
_________________________________________
场景: 在面向对象那个设计实现中,比如某一个业务逻辑在不同的细节中有不同的实现,但是逻辑的框架是一致的,
问题: 通过继承或者组合怎么来设计逻辑框架?
2、解决办法
模板模式:定义操作算法的一个骨架,而将这些操作步骤延迟到子类当中,使得子类可以根据需要重新定义算法执行步骤(算法可理解为业务流程)
策略模式:将逻辑封装到一个个类中,通过组合的方式实现具体的业务流程,再通过委托的方式将抽象接口的实现委托给组合对象实现。
UML图
两种模式的优缺点:模板模式--易于修改和扩展那些被复用的实现;破坏了封装性,继承父类中的实现细节暴露给了子类,父类更改时不得不更改子类,弗雷继承的实现在运行期间不能改变。
策略模式--“黑盒”复用,被包含的对象细节外部不可见,封装性好;但是系统中对象过多。
备注:在面向对象的设计当中有一条法则--优先使用组合,而非继承。
---------------------------------------------------------------------------
Name:一个奔跑中的loser
E-mail:chenfeiyoucan@163.com
_________________________________________
相关文章推荐
- java:23种设计模式之一Strategy模式
- 设计模式笔记之 -Template Method & Strategy
- [置顶] 简述23种java设计模式之策略模式(strategy)
- java23种设计模式--策略模式(strategy)
- [设计模式](十):策略模式(Strategy)与模板模式(Template)详解及二者间区别介绍(两种父子类行为模式)
- 浅谈java 23种设计模式之模板方法模式(Template )
- 设计模式研究(一)实例比较TemplateMethod与Strategy
- 设计模式--Template模式 VS Strategy模式
- 23种设计模式(14)--Strategy模式
- 23种设计模式 之 Template模式(模板模式)[C语言]
- Java开发中的23种设计模式详解----策略模式(strategy)
- Java开发中的23种设计模式之十三:策略模式(strategy)
- 23种设计模式之十三(行为模式)Template模式
- 【行为型模式】策略模式(Strategy)之23种java设计模式
- 23种设计模式之策略模式(Strategy)
- 23种设计模式 之 Strategy模式(策略模式)[C语言]
- Java开发中的23种设计模式详解----策略模式(strategy)
- java 23种常用设计模式之策略模式(Strategy)
- 23种设计模式之python实现--Strategy模式
- 23种设计模式之python实现--Template模式