Recently I have added some XML serialization/deserialization code to an object model library that I have been working on. In order to create the objects a Factory object is used to create the objects. The library implements the base class and is supplied a delegate that allows the application to supply the objects.
One of my colleages commented that this did not seem to be a Factory object. This is when I described it as a “Factory Gate”. The idea is that if the object comes out of the “Factory Gate” you don’t care if it was made there or bought in from outside and sold on.