2

アプリケーションの起動時に、ログインしているユーザーに基づいて正しい 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;
        }

    }
}
4

4 に答える 4

4

用語を少し説明します。オブジェクトは、参照だけで静的ではありません。オブジェクトは、少なくとも1つの静的参照を持つインスタンスです。オブジェクトを返すときは、単にそのオブジェクトへの参照を返します。他の場所にそれを保持している静電気があることはわかりません。

しかし、はい、これは有効なファクトリパターンです。

于 2009-06-10T03:40:02.700 に答える
2

これは、実際には「Abstract Factory」パターンのケースです。

于 2009-06-10T03:07:30.087 に答える
1

ファクトリ パターンは本質的に抽象化です (一般的な用語の意味で)。静的オブジェクトを返す場合でも、抽象化のレイヤーを追加していることになります。これは良いことであり、一般的にファクトリ パターンの一部と見なす必要があります。

于 2009-06-10T03:23:42.503 に答える
0

これはシングルトンファクトリになります。

于 2009-06-10T03:36:05.383 に答える