模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法模式通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势,提供了一个很好的代码复用平台。
//抽象类,其实也就是一抽象模板,定义并实现了一个模板方法,这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,放到子类中实现
abstract class AbstractClass
{
//一些抽象行为,放到子类中实现
public abstract void OriginalOperation1();
public abstract void OriginalOperation2();
//模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,她们都推迟到子类实现
public void TemplateMethod()
{
OriginalOperation1();
OriginalOperation2();
Console.WriteLine("");
}
}
class ConcreteClassA : AbstractClass
{
public override void OriginalOperation1()
{
Console.WriteLine("具体类A方法1实现");
}
public override void OriginalOperation2()
{
Console.WriteLine("具体类A方法2实现");
}
}
class ConcreteClassB : AbstractClass
{
public override void OriginalOperation1()
{
Console.WriteLine("具体类B方法1实现");
}
public override void OriginalOperation2()
{
Console.WriteLine("具体类B方法2实现");
}
}
客户端代码:
static void Main(string[] args)
{
AbstractClass c;
c = new ConcreteClassA();
c.TemplateMethod();
c = new ConcreteClassB();
c.TemplateMethod();
Console.ReadKey();
}