面向对象设计模式之TemplateMethod模板方法(行为型)
2013-10-06 16:36
721 查看
动机:在软件构建过程中,对于某一项任务,他常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现;如何在确定稳定操作结构的前提下,来灵活应对各种子步骤的变化或者晚期实现需求?
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod是的子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
适用性:
1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是O p d y k e 和J o h n s o n 所描述过的“重分解以一般化”的一个很好的例子[ O J 9 3 ]。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
3、控制子类扩展。模板方法只在特定点调用“h o o k ”操作,这样就只允许在这些点进行扩展。
UML图解:
View Code
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod是的子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
适用性:
1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是O p d y k e 和J o h n s o n 所描述过的“重分解以一般化”的一个很好的例子[ O J 9 3 ]。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
3、控制子类扩展。模板方法只在特定点调用“h o o k ”操作,这样就只允许在这些点进行扩展。
UML图解:
//具体汽车厂商汽车测试程序程序开发组——晚开发 namespace TemplateMethod { public class DaZhongCar:Vehicle { protected override void Startup() { //... } protected override void Run() { //... } protected override void Turn() { //... } protected override void Stop() { //... } } }
View Code
相关文章推荐
- C#面向对象模式设计第十四讲:Template Method 模板模式(行为型模式)
- 跟我学设计模式视频教程——面向对象理论,模板方法
- 跟我学设计模式视频教程——面向对象理论,模板方法
- 设计模式学习日志(14)-TemplateMethod模板方法(行为型模式)
- "围观"设计模式(18)--行为型之模板方法模式(TemplateMethod Pattern)
- 设计模式学习之模板方法模式(TemplateMethod,行为型模式)(9)
- Java设计模式(行为型)之-模板方法模式
- [导入]C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式.zip(7.56 MB)
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- [设计模式-行为型03]-模板方法
- 设计模式笔记(14)---模板方法模式(行为型)
- 23设计模式之模板方法(TemplateMethod)
- 设计模式23——行为型模式之模板方法模型
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- [导入]C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式).zip(9.54 MB)
- [导入]C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式.zip(8.04 MB)
- C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)
- GoF23种设计模式之行为型模式之模板方法
- 【design pattern】行为型模式之—模板方法设计模式(Template method)
- java设计模式(行为型)之模板方法模式