A Simple Factory
The Simple Factory, a variation of the Factory Method, isn't one of the original 23 GoF design patterns. In fact, the Simple Factory isn't usually called a "pattern." Instead, the Simple Factory is called an "idiom." Whether you call it a "pattern" or an "idiom," developers make frequent use of the Simple Factory. You can use the Simple Factory when you don't need to let subclasses decide which class to instantiate.
The following code demonstrates the use of the Simple Factory for the car ordering application. Starting from the code at the very beginning of this article, you pull out any frequently-changing code, and encapsulate the code into a single class.
public class SimpleFactory
{
public Car createCar(String model)
{
Car car = null;
if(model.equals("Lucerne"))
car = new Buick(model);
else if(model.equals("Corvette"))
car = new Chevrolet(model);
else if(model.equals("Fusion"))
car = new Ford(model);
else if(model.equals("GTO"))
car = new Pontiac(model);
else if(model.equals("Vue"))
car = new Saturn(model);
return car;
}
}
public class OrderCars
{
SimpleFactory factory;
public OrderCars(SimpleFactory factory)
{
this.factory = factory;
}
public Car orderCar(String model)
{
Car car = factory.createCar(model);
car.buildCar();
car.testCar();
car.shipCar();
return car;
}
}
So What else Is new?
In the end, neither the Factory Method nor the Simple Factory keeps you from constructing concrete objects. Somewhere, your code uses Java's new keyword and calls an honest-to-goodness constructor. But with the techniques described in this article, you delay the use of new until the execution reaches a subclass. The effect of this delay is to isolate the code that's subject to frequent change. When a company announces a new make of cars, you'll know exactly where to put the new code.
Resources
About the Authors
Barry Burd is a professor in the Department of Mathematics and Computer Science at Drew University in Madison, New Jersey. When he's not lecturing at Drew University, Dr. Burd leads training courses for professional programmers in business and industry. He has lectured at conferences in America, Europe, Australia and Asia. He is the author of several articles and books, including "Java 2 For Dummies" and "Eclipse For Dummies," both published by Wiley.
Michael P. Redlich is a Senior Research Technician (formerly a Systems Analyst) at ExxonMobil Research and Engineering, Co. in Clinton, New Jersey with extensive experience in developing custom web and scientific laboratory applications. Mike also has experience as a Technical Support Engineer for Ai-Logix, Inc. where he developed computer telephony applications. He holds a Bachelor of Science in Computer Science from Rutgers University. In his spare time, Mike facilitates the ACGNJ Java Users Group and serves as ACGNJ Secretary. Mike has also co-written several articles for JavaBoutique, and his computing experience includes computer security, relational database design and development, object-oriented design and analysis, C/C++, Java, Visual Basic, FORTRAN, Pascal, MATLAB, HTML, XML, ASP, VBScript, and JavaScript in both the PC and UNIX environments.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|