设计模式之--模板方法模式
模板方法,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤(它是通过继承和多态来实现的)。
当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现,我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为。
模板方法提供了一个很好的代码复用平台。
abstract class AbstractClass { public abstract void PrimitiveOperation1();//一些抽象行为,放到子类去实现 public abstract void PrimitiveOperation2(); public void TemplateMethod()//模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们都推迟到子类实现 { PrimitiveOperation1(); PrimitiveOperation2(); } } class ConcreteClassA: AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具体类A实现1方法"); } public override void PrimitiveOperation2() { Console.WriteLine("具体类A实现2方法"); } } class ConcreteClassB : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具体类B实现1方法"); } public override void PrimitiveOperation2() { Console.WriteLine("具体类B实现2方法"); } }
static void Main(string[] args) { AbstractClass c; c = new ConcreteClassA(); c.TemplateMethod(); c = new ConcreteClassB(); c.TemplateMethod(); Console.Read(); }
摘自大话设计模式。