一、定义
模板方法模式:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
解释:简单来说,需要定义一个通用的基类,但是基类中不同的操作,于是模板方法模式将不同的操作编写成一个抽象函数放到子类中实现,这样即可完成通用基类的目的。
二、UML类图及基本代码
基本代码:
abstract class AbstractClass { public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine("基类的行为"); } } 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的实现"); } }
客户端调用及结果:
AbstractClass ac; ac = new ConcreteClassA(); ac.TemplateMethod(); Console.WriteLine(""); ac = new ConcreteClassB(); ac.TemplateMethod();