设计模式之模版方法模式
2016-10-04 22:10
190 查看
设计模式,六大设计原则,类的特性
总纲http://blog.csdn.net/fenglailea/article/details/52733435
风.fox
模版方法模式
定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通用类图
模版方法模式确实非常简单,仅仅使用了JAVA/PHP语言的继承机制,但它是一个应用非常广泛的模式。
AbstractClass叫做抽象模版,他的方法分为两类:
1. 基本方法
基本方法也叫基本操作,是由子类实现的方法,并且在模版方法中调用
2. 模版方法
可以有一个或几个,一般是一个具体方法,也就是一个框架实现对基本方法的调度,完成固定的逻辑
案例
JAVA//抽象模版类 public abstract class AbstractClass{ //基本方法 protected void doAnything(); //基本方法 protected void doSomething(); //模版方法 protected void templateMethod(){ /** * 调用基本方法,完成相关的逻辑 */ this.doAnything(); this.doSomething(); } } //具体模版类 public class ConcreteClass1 extends AbstractClass{ //实现基本方法 protected void doAnything(){ ... } protected void doSomething(){ ... } } public class ConcreteClass2 extends AbstractClass{ //实现基本方法 protected void doAnything(){ ... } protected void doSomething(){ ... } } //场景类 public class Client{ public static void main(String[] args){ AbstractClass class1=new ConcreteClass1(); AbstractClass class2=new ConcreteClass2(); class1.templateMethod(); class2.templateMethod(); } }
抽象模版中的基本方法尽量设计为protected类型,符合迪米特法则,不需要暴露的属性或方法尽量不要设置为protected类型。
实现类若非必要,尽量不要扩大父类中的访问权限
优点
封装不变部分,扩展可变部分提取公共部分代码,便于维护
行为由父类控制,子类实现
使用场景
多个子类有公有的方法,并且逻辑基本相同时重要、复杂的算法,可以把核心算法设计为模版方法,周边的相关细节功能则由各个子类实现
重构时,模版方法是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为
相关文章推荐
- .NET设计模式-模版方法(Template Method)
- 设计模式--模版方法
- 23种设计模式(6):模版方法模式
- 模版方法设计模式
- 23种设计模式(6):模版方法模式
- .NET设计模式(16):模版方法(Template Method)
- 设计模式--模版方法模式(Templet Method Pattern)
- 设计模式之模版方法模式
- .NET设计模式(16):模版方法(Template Method)
- 23种设计模式(6):模版方法模式
- 设计模式--模版方法(TemplateMethod)
- 设计模式学习总结11 - 行为型6 - TemplateMethod模版方法模式
- 设计模式之模版方法模式
- java设计模式八--Template Method(方法模版模式)
- 设计模式与泡mm的关系之template method模版方法模式及再思考
- 设计模式--模版方法(TemplateMethod)
- [OOAD]设计模式之模版方法(Template Method)模式
- 设计模式(三)之模版方法模式(Template method Pattern)
- 设计模式之模版方法模试
- 23种设计模式(6):模版方法模式