模板方法模式定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。
// 抽象类
public abstract class AbstractClass
{
// 模板方法
public void TemplateMethod()
{
SpecificOperation1();
PrimitiveOperation1();
SpecificOperation2();
PrimitiveOperation2();
}
// 钩子方法(默认什么都不做,子类可以覆盖)
protected virtual void HookMethod()
{
// 默认实现为空
}
// 原始操作1
protected abstract void PrimitiveOperation1();
// 原始操作2
protected abstract void PrimitiveOperation2();
// 具体操作,由抽象类具体实现
private void SpecificOperation1()
{
Console.WriteLine("Executing SpecificOperation1");
}
private void SpecificOperation2()
{
// 可以在这里调用钩子方法
HookMethod();
Console.WriteLine("Executing SpecificOperation2");
}
}