定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可冲定义该算法的某些特定步骤;
模板方法模式是通过把不变行为搬到父类,去除子类中的重复代码:
public abstract class AbstractClass
{
public abstract void OperationA();
public abstract void OperationB();
public void TemplateMethod()
{
OperationA();
OperationB();
Console.WriteLine("模板模式方法");
}
}
public class ConcreteClassA : AbstractClass
{
public override void OperationA()
{
Console.WriteLine("A类的实现方法A");
}
public override void OperationB()
{
Console.WriteLine("A类的实现方法B");
}
}
public class ConcreteClassB : AbstractClass
{
public override void OperationA()
{
Console.WriteLine("B类的实现方法A");
}
public override void OperationB()
{
Console.WriteLine("B类的实现方法B");
}
}
客户端的调用方法:
AbstractClass abstractClass;
abstractClass = new ConcreteClassA();
abstractClass.TemplateMethod();
abstractClass = new ConcreteClassB();
abstractClass.TemplateMethod();