C#設計モードのテンプレート方法
公共の部分を公共のクラスに抽出して、やっと法を提供して、一致しない地方は子のクラスから完成します
public abstract class BaseHandler
{
public virtual void Handle()
{
this.OperationA();
Console.WriteLine("common part");
this.OperationB();
}
protected virtual void OperationA()
{
Console.WriteLine("operationA in base handler");
}
protected virtual void OperationB()
{
Console.WriteLine("operationB in base handler");
}
}
public class SubClass : BaseHandler
{
public override void Handle()
{
base.Handle();
}
protected override void OperationA()
{
Console.WriteLine("implementation operationA in sub class");
}
protected override void OperationB()
{
Console.WriteLine("implementation operationB in sub class");
}
}
BaseHandler bh = new SubClass();
bh.Handle();