A clone factory may be used to create objects (e.g. message objects) of a certain type depending on an ID. A list of clones is stored inside the factory.

clone factory

A singleton controls the number of objects which may be created from this class. A singleton object is global and accessible from everywhere in your code.