Brief Overview:

|
Encapsulates a group of individual factories that have a common theme.
The client object creates a concrete (subclass) implementation of the
abstract factory then uses the generic interface defined by the parent
Abstract Factory class to use the factory to create objects. The client
does not know or care which of the concrete objects it gets from the
factory since it only uses the generic interfaces to the objects. Thus
the details of the implementation of an object is separated from their
actual usage, i.e. you may call a generic "execute" function in the object
without caring what the object actually does. A simple example is an
abstract factory called DocumentCreator. It has interfaces to
create a number of products such as createLetter() and createResume().
The DocumentCreator factory may have subclasses such as FancyDocumentCreator
or ModernDocumentCreator. When createLetter() is called on the
FancyDocumentCreator it returns an instance of FancyLetter. When
createResume() is called on ModernDocumentCreator it returns an instance
of ModernResume.
|