定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。
具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。
namespace ConsoleApp1
{
public abstract class Bank
{
// 模版方法(具体的整个过程)
public void templateMethod() {
takeNumber();
process();
evaluate();
}
// 取号
public void takeNumber() {
Console.WriteLine("取号");
}
// 业务
public abstract void process();
// 评分
public void evaluate()
{
Console.WriteLine("评价");
}
}
// 具体业务
public class Deposit : Bank
{
public override void process()
{
Console.WriteLine("存款");
}
}
public class Withdraw : Bank
{
public override void process()
{
Console.WriteLine("取款");
}
}
public class Transfer : Bank
{
public override void process()
{
Console.WriteLine("转账");
}
}
class Program
{
static void Main(string[] args)
{
Bank bank = new Deposit();
bank.templateMethod();
bank = new Withdraw();
bank.templateMethod();
}
}
}