C#设计模式之我见(四)Ⅰ
从今天开始讲行为型模式中的模版方法模式(Template Method)、命令模式(Command Pattern)、迭代器模式(Iterator Pattern)、观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)、解释器模式(Interpreter Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、职责链模式(Chain of Responsibility)、访问者模式(Visitor Pattern)。
下面我们介绍一下模版方法模式(Template Method)的定义和在什么情况下使用。
模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法(这些具体方法统称为“模板方法”),这样构成一个抽象基类。子类通过继承这个抽象基类去实现各个步骤的抽象方法,而工作流程却由父类控制。模版方法中的方法可以分为两大类:模版方法(Template Method)和基本方法(Primitive Method)。
现在分析一个简单的实例:
namespace TemplateMethod.DesignPattern
{
using System;
class Algorithm
{
public void DoAlgorithm()
{
Console.WriteLine("In DoAlgorithm");
Console.WriteLine("In Algorithm - DoAlgoStep1");
Console.WriteLine("In Algorithm - DoAlgoStep2");
DoAlgoStep3();
Console.WriteLine("In Algorithm - DoAlgoStep4");
DoAlgoStep5();
}
virtual public void DoAlgoStep3()
{
Console.WriteLine("In Algorithm - DoAlgoStep3");
}
virtual public void DoAlgoStep5()
{
Console.WriteLine("In Algorithm - DoAlgoStep5");
}
}
class CustomAlgorithm : Algorithm
{
public override void DoAlgoStep3()
{
Console.WriteLine("In CustomAlgorithm - DoAlgoStep3");
}
public override void DoAlgoStep5()
{
Console.WriteLine("In CustomAlgorithm - DoAlgoStep5");
}
}
public class Client
{
public static int Main(string[] args)
{
CustomAlgorithm c = new CustomAlgorithm();
c.DoAlgorithm();
return 0;
}
}
}