Let's say I have a class like this:

```

class MonkeyFish
{
   MonkeyFish( GlobalObjectA & a, GlobalObjectB & b, GlobalObjectC & c);

   private:
     GlobalObjectA & m_a;
     GlobalObjectB & m_b;
     GlobalObjectC & m_c;
}

```

Without a factory, I need to do the following in order to instantiated a `MonkeyFish`.

```

GlobalObjectA a;
GlobalObjectB b;
GlobalObjectC c;

int main()
{
  MonkeyFish * monkey_fish = new MonkeyFish(a, b, c);
  monkey_fish->go();
}

```

On the other hand, if I have a `MonkeyFishFactory`, it seems like I have to do this:

```

GlobalObjectA a;
GlobalObjectB b;
GlobalObjectC c;

int main()
{
  MonkeyFishFactory mf_factory(a, b, c);
  MonkeyFish * monkey_fish = mf_factory.buildMonkeyFish("Bob");
  monkey_fish->go();
}

```

1. I still have global objects.
2. Even if the MonkeyFishFactory itself created the `GlobalObjects` internally (so they are now inside the MonkeyFishFactory instead of true globals), it seems like the MonkeyFishFactory **itself** still needs to be a global object so that I can access it anytime I want to create a `MonkeyFish`.

Isn't the Factory pattern the same thing as global state in this case? 

(I'm currently operating under the assumption that global state is a Bad Thing, and eliminating it is a Good Thing.)