C#ででデザインパターン「FactoryMethodパターン」

C# コンピュータ
C#

オブジェクトの生成工程と生成するクラスを分離したパターン。
クラスを差し替えたりすることで、開発と本番環境の切り替えなどがスムーズに出来るようです。

サンプルコード

/// <summary>
/// FactoryMethodパターンのサンプルコード
/// </summary>
interface IProduct
{
    string Method1();
}
public class Product1 : IProduct
{
    public string Method1()
    {
        return "Product1.Method1()";
    }
}
public class Product2 : IProduct
{
    public string Method1()
    {
        return "Product2.Method1()";
    }
}
abstract class Createor
{
    abstract public IProduct FactoryMethod();
}
class Product1Creator: Createor
{
    override public IProduct FactoryMethod()
    {
        return new Product1();
    }
}
class Product2Creator: Createor
{
    override public IProduct FactoryMethod()
    {
        return new Product2();
    }
}
class Program
{
    static void Main()
    {
        var obj1 = (new Product1Creator()).FactoryMethod();
        var obj2 = (new Product2Creator()).FactoryMethod();
        Console.WriteLine($"{obj1.Method1()}");
        Console.WriteLine($"{obj2.Method1()}");
    }


}

ほとんど初めてabstractをつかった感じがします。
FactoryMethod()でどのクラスのオブジェクトを生成するか決定しています。

コメント