のは、私はこのようなクラスがあるとしましょう:工場なし工場パターンはグローバル状態と同じではありませんか?
class MonkeyFish { MonkeyFish(GlobalObjectA & a, GlobalObjectB & b, GlobalObjectC & c); private: GlobalObjectA & m_a; GlobalObjectB & m_b; GlobalObjectC & m_c; }
を、私はMonkeyFish
をインスタンス化するために、次の操作を実行する必要があります。一方
GlobalObjectA a; GlobalObjectB b; GlobalObjectC c; int main() { MonkeyFish * monkey_fish = new MonkeyFish(a, b, c); monkey_fish->go(); }
私はMonkeyFishFactory
を持っている場合、私はこれをしなければならないように、そうです:
GlobalObjectA a; GlobalObjectB b; GlobalObjectC c; int main() { MonkeyFishFactory mf_factory(a, b, c); MonkeyFish * monkey_fish = mf_factory.buildMonkeyFish("Bob"); monkey_fish->go(); }
私はまだグローバルオブジェクトを持っています。
MonkeyFishFactory自体が(そう、彼らは代わりに真のグローバルのMonkeyFishFactoryの内側になりました)内部
GlobalObjects
を作成した場合でも、それはMonkeyFishFactory 自体のように思えるはまだ私はいつでもアクセスできるようにグローバルオブジェクトである必要がありますMonkeyFish
を作成したいと思います。
この場合、ファクトリパターンはグローバル状態と同じではありませんか?
(私は現在、グローバル状態が悪いことであるという仮定の下で動作し、それは良いことです排除しています。)
ファクトリとシングルトンの両方を一緒に使用することについて話しています。あなたが知覚している問題は、あなたが記述しているようなシングルトンであり、基本的にはグローバルな状態が素敵です。 D.Shawleyの答えを参照してください。 –