C# 模板方法模型


class Program
{
static void Main(string[] args)
{
AbstractClass c;
c = new ConcreteClassA();
c.TemplateMethod();

c = new ConcreteClassB();
c.TemplateMethod();

Console.Read();
}
}

//AbstractClass

abstract class AbstractClass
{
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();

public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}

//ConcreteClassA

class ConcreteClassA : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("具体类A方法1实现");
}

public override void PrimitiveOperation2()
{
Console.WriteLine("具体类A方法2实现");
}
}

//ConcreteClassB

class ConcreteClassB : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("具体类B方法1实现");
}

public override void PrimitiveOperation2()
{
Console.WriteLine("具体类B方法2实现");
}
}

C