定义 定义某个操作算法的骨架,把某些步骤放到其子类。模板方法让子类在不改变算法结构的情况下重定义某些具体的步骤。
使用频度:
中
UML 类图
参与者该模式参与的类或对象
- 定义算法的骨架,实现模板方法,其会调用抽象类定义的原生操作。
C# 示例代码 // Template pattern -- Structural example
using System;
namespace DoFactory.GangOfFour.Template.Structural
{
///
/// MainApp startup class for Real-World
/// Template Design Pattern.
///
class MainApp
{
///
/// Entry point into console application.
///
static void Main()
{
AbstractClass aA = new ConcreteClassA();
aA.TemplateMethod();
AbstractClass aB = new ConcreteClassB();
aB.TemplateMethod();
// Wait for user
Console.ReadKey();
}
}
///
/// The 'AbstractClass' abstract class
///
abstract class AbstractClass
{
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
// The "Template method"
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}
///
/// A 'ConcreteClass' class
///
class ConcreteClassA : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation2()");
}
}
///
/// A 'ConcreteClass' class
///
class ConcreteClassB : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation2()");
}
}
}
|
输出
ConcreteClassA.PrimitiveOperation1()
ConcreteClassA.PrimitiveOperation2()
|
阅读(550) | 评论(0) | 转发(0) |