あなたが提供する例は技術的にはファクトリメソッドですが、あまり役に立ちません。設計パターンは、ターゲット アプリケーション/機能の開発を簡素化できる場合にのみ有益です。
一般に、ファクトリ メソッドの実装のメリットは次のとおりです。
- オブジェクトの作成ロジックの標準化
- オブジェクト構築のための意味的に意味のあるインターフェースを提供する
パラメーターを取らないインスタンス メソッドが、既定のコンストラクターよりも優れている可能性があるかどうかは不明です。
ウィキペディアの Factory Method 記事の C# の例を見てください。(コピーして下に貼り付けます)
public class Complex
{
public double real;
public double imaginary;
public static Complex FromCartesianFactory(double real, double imaginary)
{
return new Complex(real, imaginary);
}
public static Complex FromPolarFactory(double modulus, double angle)
{
return new Complex(modulus * Math.Cos(angle), modulus * Math.Sin(angle));
}
private Complex(double real, double imaginary)
{
this.real = real;
this.imaginary = imaginary;
}
}
Complex product = Complex.FromPolarFactory(1, Math.PI);
それぞれが明確に定義されたパラメーターと、明確に定義されたオブジェクトの有効なインスタンスを構築するためにそれらのパラメーターを使用する方法の明確に定義された解釈を持つ 2 つのファクトリ メソッドを指定するため、これは便利です。さらに、コンストラクタはprivate
であり、ファクトリ メソッドは ですstatic
。これにより、そのオブジェクトのインスタンスを構築する唯一の手段はファクトリ メソッドを使用することになります。この例には特に適用されませんが (考えられるすべてのdouble
パラメーター値が有効であるため)、ファクトリ メソッドまたはコンストラクターにも検証ロジックを配置することは理にかなっています。
一般に、ファクトリ メソッドの目的は、オブジェクトの構築をカプセル化することでコードの複雑さを軽減することであり、提供した例がその目的をどのように達成するかは不明です。