ファクトリ クラスではなくオブジェクト内でファクトリ メソッドを使用するのが適切なのはどのような場合ですか?
ベストアンサー1
私は、自分のクラスを「人」として捉え、デザインパターンについて考えるのが好きです。そして、パターンとは、人々が互いに話し合う方法です。
ですから、私にとって、工場のパターンは人材派遣会社のようなものです。そこには、さまざまな人数の労働者を必要とする人がいます。その人は、雇用する人に必要な情報をいくらか知っているかもしれませんが、それだけです。
そのため、新しい従業員が必要になったときは、雇用代理店に電話して、必要なことを伝えます。実際に人を雇うには、福利厚生や資格の確認など、多くのことを知っておく必要があります。しかし、雇用する側は、これらのことを何も知る必要はありません。雇用代理店がすべて処理します。
同様に、ファクトリーを使用すると、消費者はオブジェクトの作成方法や依存関係の詳細を知らなくても、実際に必要な情報を提供するだけで新しいオブジェクトを作成できます。
public interface IThingFactory
{
Thing GetThing(string theString);
}
public class ThingFactory : IThingFactory
{
public Thing GetThing(string theString)
{
return new Thing(theString, firstDependency, secondDependency);
}
}
したがって、ThingFactory のコンシューマーは、コンシューマーから取得される文字列データを除き、Thing の依存関係を意識することなく、Thing を取得できるようになりました。