Java Reference
In-Depth Information
This flexibility can be achieved by using interfaces for these components. But the problem with programming to
interfaces is that you cannot create an object from an interface. You need an implementing class to get an object.
Instead of coding a specific implementing class in your application, you extract the functionality of the
constructor and put it in a method. That method is the factory method.
To create these objects, instead of coding a specific implementing class in your application, you extract the
functionality of the constructor and put it in a method. This produces a ConcreteCreator whose responsibility it
is to create the proper objects. That ConcreteCreator creates instances of an implementation ( ConcreteProduct )
of an interface ( Product ).
Implementation
The class diagram is shown in Figure 1.3 .
Figure 1.3. Factory Method class diagram
To implement the Factory Method you need:
Product - The interface of objects created by the factory.
ConcreteProduct - The implementing class of Product . Objects of this class are created by the
ConcreteCreator .
Creator - The interface that defines the factory method(s) ( factoryMethod ).
ConcreteCreator - The class that extends Creator and that provides an implementation for the
factoryMethod . This can return any object that implements the Product interface.
Benefits and Drawbacks
A major benefit to this solution is that the PIM can be very generic. It only needs to know how to request an
editor for an item. The information about how to edit a specific item is contained in the editor. The editor can also
create the graphical user interface (GUI) for editing. This makes the PIM more modular, making it easier to add
new types of information to be managed without changing the core program itself.
JDBC (Java database connectivity) uses the Factory Method pattern in many of its interfaces. You can use
another JDBC driver as long as the correct driver is loaded. The rest of your application remains the same. (For
more information on patterns in JDBC , see “ JDBC ” on page 308.)
The drawback to this pattern is the fact that to add a new type of product, you must add another new
implementing class, and you must either change an existing ConcreteCreator or create a new class that
implements Product .
Pattern Variants
There are several variations for this pattern:
 
Search WWH ::




Custom Search