テンプレートメソッドパターンの短いサンプル

C# でテンプレートメソッドパターンを実装するには、次のようにします。

var concreteTemplateMethod = new ConcreteTemplateMethod();
concreteTemplateMethod.Run();

abstract class TemplateMethod
{
    public void Run()
    {
        Step1();
        Step2();
        Step3();
    }
    protected abstract void Step1();
    protected abstract void Step2();
    protected virtual void Step3()
    {
        Console.WriteLine("デフォルトのStep3実装");
    }
}

class ConcreteTemplateMethod : TemplateMethod
{
    protected override void Step1()
    {
        Console.WriteLine("具体的なステップ1実施");
    }
    protected override void Step2()
    {
        Console.WriteLine("具体的なステップ2実施");
    }
    protected override void Step3()
    {
        Console.WriteLine("オーバーライドされたステップ3の実装");
    }
}

実行結果

具体的なステップ1実施
具体的なステップ2実施
オーバーライドされたステップ3の実装

このサンプルでは、テンプレートメソッドパターンを実装しています。テンプレートメソッドパターンは、アルゴリズムの構造を定義している抽象クラスに共通の部分を実装し、サブクラスに特定の機能を実装させることを目的としたパターンです。

このサンプルでは、TemplateMethod クラスがアルゴリズムの構造を定義する抽象クラスとなっています。このクラスは、Run メソッドを実装しています。このメソッドは、Step1Step2Step3 の三つのステップを順番に実行します。これらのステップは、抽象メソッドとして定義されています。

そして、ConcreteTemplateMethod クラスは、TemplateMethod クラスを継承し、各抽象メソッドをオーバーライドします。ここでは、各ステップで異なる処理を行うことを示しています。

コードの開始は、 ConcreteTemplateMethod クラスの Run メソッドを呼び出し、テンプレートメソッドパターンの実装を確認しています。

C#,学習,設計

Posted by hidepon