模板方法模式(Template Method Pattern)
一种类行为模式,该结构中只存在父类与子类之间的继承关系。模板方法提供了具体的模板方法来定义算法结构,而具体步骤的实现可以在其子类中完成。
模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类不改变一个算法的结构即可重定义该算法的某些特定的步骤。
模板方法模式有2种角色:
1.AbstractClass(抽象类):定义了一系列基本操作(具体的或抽象的),每一个基本操作对应算法的一个步骤,在其子类可以重定义或实现这些步骤,同时还实现一个模板方法,用于定义一个算法的框架。
2.ConcreteClass(具体子类):用于实现父类声明的抽象基本操作,以完成子类特定算法的步骤,也可以覆盖它。
抽象类:
abstract class AbstractClass
{
//模板方法
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
PrimitiveOperation3();
}
//具体方法
public void PrimitiveOperation1()
{
//实现代码
}
//抽象方法
public abstract void PrimitiveOperation2();
//钩子方法
public virtual void PrimitiveOperation3(){}
}
具体子类:
class ConcreteClass:AbstractClass
{
public override void PrimitiveOperation2()
{
//实现代码
}
public override void PrimitiveOperation3()
{
//实现代码
}
}