假设我有这样的课程:
猴鱼类
{
MonkeyFish(GlobalObjectA & a, GlobalObjectB & b, GlobalObjectC & c);
私人的:
GlobalObjectA & m_a;
GlobalObjectB & m_b;
GlobalObjectC & m_c;
}
如果没有工厂,我需要执行以下操作才能实例化MonkeyFish.
全局对象A a;
全局对象B b;
全局对象 C c;
主函数()
{
MonkeyFish * monkey_fish = new MonkeyFish(a, b, c);
猴子鱼->去();
}
另一方面,如果我有MonkeyFishFactory,似乎我必须这样做:
全局对象A a;
全局对象B b;
全局对象 C c;
主函数()
{
MonkeyFishFactory mf_factory(a, b, c);
MonkeyFish * monkey_fish = mf_factory.buildMonkeyFish("Bob");
猴子鱼->去();
}
我仍然有全局对象。
即使 MonkeyFishFactory 本身在
GlobalObjects内部创建了(所以它们现在在 MonkeyFishFactory 内部而不是真正的全局变量中),看起来 MonkeyFishFactory本身仍然需要是一个全局对象,以便我可以随时访问它来创建一个MonkeyFish.
在这种情况下,工厂模式与全局状态不是一回事吗?
(我目前的假设是全局状态是一件坏事,消除它是一件好事。)