原文:http://www.cnblogs.com/zhenyulu/articles/79894.html
//
Template Method pattern -- Structural example
using
System;

//
"AbstractClass"
abstract
class
AbstractClass
{
// Methods
abstract public void PrimitiveOperation1();
abstract public void PrimitiveOperation2();

// The Template method
public void TemplateMethod()
{
Console.WriteLine("In AbstractClass.TemplateMethod()");
PrimitiveOperation1();
PrimitiveOperation2();
}
}

//
"ConcreteClass"
class
ConcreteClass : AbstractClass
{
// Methods
public override void PrimitiveOperation1()
{
Console.WriteLine("Called ConcreteClass.PrimitiveOperation1()");
}

public override void PrimitiveOperation2()
{
Console.WriteLine("Called ConcreteClass.PrimitiveOperation2()");
}
}

/// <summary>
/// Client test
/// </summary>
public
class
Client
{
public static void Main( string[] args )
{
// Create instance and call template method
ConcreteClass c = new ConcreteClass();
c.TemplateMethod();
}
}
using
System;
//
"AbstractClass"
abstract
class
AbstractClass
{
// Methods
abstract public void PrimitiveOperation1();
abstract public void PrimitiveOperation2();
// The Template method
public void TemplateMethod()
{
Console.WriteLine("In AbstractClass.TemplateMethod()");
PrimitiveOperation1();
PrimitiveOperation2();
}
}

//
"ConcreteClass"
class
ConcreteClass : AbstractClass
{
// Methods
public override void PrimitiveOperation1()
{
Console.WriteLine("Called ConcreteClass.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("Called ConcreteClass.PrimitiveOperation2()");
}
}

/// <summary>
/// Client test
/// </summary>
public
class
Client
{
public static void Main( string[] args )
{
// Create instance and call template method
ConcreteClass c = new ConcreteClass();
c.TemplateMethod();
}
}
本文通过C#代码示例展示了模板方法模式的应用。抽象基类定义了模板方法及抽象操作,具体子类实现这些抽象操作,展示了一种将算法骨架与细节分离的设计模式。
1815

被折叠的 条评论
为什么被折叠?



