私のアプリケーションが起動すると、ログインしているユーザに基づいて正しいDALクラス(現在は4つ)のインスタンスを取得する必要があります。特定のユーザが特定のデータベースからプルダウンしています。ファクトリによって返されるオブジェクトが静的である場合、ファクトリと見なされますか?
これらのDALクラスのインスタンスをインスタンス化するのではなく、単純に正しい静的インスタンスを返すだけで、それでも "ファクトリ"パターンと見なされますか?すべてのユーザーが共有できるので、これらのオブジェクトを継続的に作成する必要はありません。
擬似コード:
public class RepositoryFactory
{
public static IRepository repoA = new FranksLumberRepo();
public static IRepository repoB = new LowesHardwareRepo();
public static IRepository repoC = new HackmansHardwareRepo();
public static IRepository repoD = new TomsHardwareRepo();
public IRepository createRepo(User currentUser)
{
switch(User.Store)
{
case FrankLumber:
return repoA;
case LowesHardware:
return repoB;
case Hackmans:
return repoC;
case TomsHardware:
return repoD;
default:
throw exception;
}
}
}
これは、抽象ファクトリパターンを使用できる良い例です。 –
抽象ファクトリパターンのWikipediasページを読んだら、抽象ファクトリがサブファクトリ自体を返すために使用され、オブジェクトをインスタンス化するために使用されるように見えます。これは上のコードでは当てはまりません。 – mmcdole
この例にはAbstractFactoryはありません。要約はどこにあり、具体的な工場はどこですか? – TimW