行为模式之十---TemplateMethod
2009-06-10 22:50
337 查看
1、结构图
2、代码
/****************************************************************** * 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod * 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 * 适用性: * 1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 * 2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 * 这是Opdyke和Johnson所描述过的“重分解以一般化”的一个很好的例子[OJ93]。 * 首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后, * 用一个调用这些新的操作的模板方法来替换这些不同的代码。 * 3、控制子类扩展。模板方法只在特定点调用“hook”操作(参见效果一节), * 这样就只允许在这些点进行扩展。 * 适用性:ConcreteClass靠AbstractClass来实现算法中不变的步骤。 * 作者:董怀信 * 日期:2009-06-10 * ****************************************************************/ using System; namespace DesignPattern.BehavioralPattern { /// <summary> /// 定义抽象的原语操作,具体的子类将重定义它们以实现一个算法的各步骤。 /// 实现一个模板算法,定义一个算法的骨架。该原语方法不但调用原语操作, /// 也调用定义在AbstractClass或其他对象中的操作。 /// </summary> public abstract class AbstractClass { public void TemplateMethod() { Console.WriteLine("AbstractClass:TemplateMethod Start;"); this.PrimitiveOperation1(); this.PrimitiveOperation2(); Console.WriteLine("AbstractClass:TemplateMethod End;"); } protected abstract void PrimitiveOperation1(); protected abstract void PrimitiveOperation2(); } /// <summary> /// 诗选原语操作以完成算法中与特定子类相关的步骤。 /// </summary> public class ConcreteClass : AbstractClass { protected override void PrimitiveOperation1() { Console.WriteLine("ConcreteClass:PrimitiveOperation1();"); } protected override void PrimitiveOperation2() { Console.WriteLine("ConcreteClass:PrimitiveOperation2();"); } } /// <summary> /// 客户测试 /// </summary> public class Client { public void Test() { AbstractClass instance = new ConcreteClass(); instance.TemplateMethod(); } } }
相关文章推荐
- 设计模式-行为模式之Template Method
- 设计模式-行为设计模式:模板方法设计模式 TemplateMethod
- 设计模式二,Proxy,State,Adapter,Template Method
- 模版方法模式(Template Method Pattern)
- 模板方法模式【Template Method Pattern】
- java_设计模式_模板方法模式_Template Method Pattern(2016-08-11)
- 设计模式-template method
- The Template Method Pattern 模板方法模式
- 二十五.行为型设计模式——Template Method Pattern(模版方法模式)
- Java设计模式 Design Pattern:模板方法 Template Method
- Template Method Pattern 模板方法模式
- 设计模式——模板方法模式( Template Method Pattern)
- c++设计模式----模板方法template method
- 设计模式之模板模式 template method
- java设计模式 模板方法模式Template Method
- 设计模式9 - 模板方法模式【Template Method Pattern】
- [设计模式](十):策略模式(Strategy)与模板模式(Template)详解及二者间区别介绍(两种父子类行为模式)
- 模版方法模式 Template Method Pattern — 穷人和富人的不同婚恋历程
- 设计模式 - 模版方法模式 Template Method
- 模板强化Template Method & Singleton 模式