模板方法模式:定义一个操作中的算法骨干,而将这些步骤延迟到子类中,模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特点步骤。
实例图:
抽象类定义算法的骨干(TemplateMethod)和可能使用到的算法(primitiveoperation1,2)这2个算法由子类继承并且实现。
concreteClass类继承抽象类,实现primitiveMethod方法。功抽象类的实例在骨干方法中调用
模板方法模式是通过把不变的行为搬移到超类中,去除子类中重复代码来体现他的优势。模板方法模式提供了一个很好的代码复用平台。
当不变和可变的行为在方法的子类中实现中混混合在一起的时候,不变的行为就会在子类中重复的出现,我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
代码实例如下:
abstract class AbstractClass
{
public abstract void primitiveOperation1();
public abstract void primitiveOperation2();
public void TemplateMethod()
{
primitiveOperation1();
primitiveOperation2();
Console.write("");
}
}
public class ConcreteClassA : AbstractClass
{
public override void primitiveOperation1()
{
Console.writeline("具体类a方法1的实现");
}
public override void primitiveOperation1()
{
Console.writeline("具体类a方法2的实现");
}
}
public class ConcreteClassB : AbstractClass
{
public override void primitiveOperation1()
{
Console.writeline("具体类b方法1的实现");
}
public override void primitiveOperation1()
{
Console.writeline("具体类b方法2的实现");
}
}
//客户端调用
static void Main(string[] args)
{
AbstractClass c;
c = new ConcreteClassA();
c.TemplateMethod();
c = new ConcreteClassB();
c.TemplateMethod();
}
本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。