Home
Java
Factory Example (Design Pattern)
Updated May 26, 2023
Dot Net Perls
Factory pattern. With design patterns, we formalize how classes are used together. This makes programs clearer and easier to develop—more organized.
In a factory, objects of a common derived type are returned. So we use a method, a factory method, to return classes that "extend" a common base class.
Example implementation. In this code, we create a hierarchy of classes: the Position abstract class is the base. And Manager, Clerk and Programmer extend that base class.
Info The Factor class contains a get() method. It uses a switch statement to return a class based on an id number.
switch
And In the factory, derived types are returned. They are implicitly cast to the Position base class.
Here We invoke the Factory.get() method. Get() is static so we need no Factory instance.
static
abstract class Position { public abstract String getTitle(); } class Manager extends Position { public String getTitle() { return "Manager"; } } class Clerk extends Position { public String getTitle() { return "Clerk"; } } class Programmer extends Position { public String getTitle() { return "Programmer"; } } class Factory { public static Position get(int id) { // Return a Position object based on the id parameter. // ... All these classes "extend" Position. switch (id) { case 0: return new Manager(); case 1: case 2: return new Clerk(); case 3: default: return new Programmer(); } } } public class Program { public static void main(String[] args) { for (int i = 0; i <= 3; i++) { // Use Factory to get a Position for each id. Position p = Factory.get(i); // Display the results. System.out.println("Where id = " + i + ", position = " + p.getTitle()); } } }
Where id = 0, position = Manager Where id = 1, position = Clerk Where id = 2, position = Clerk Where id = 3, position = Programmer
With a factory, we are creating an abstraction of the creation of classes. The inheritance mechanism, where derived types can be treated by their base class, is used.
Consider this. In massively complex programs, creating classes in many ways, throughout the code, may become complicated. With a factory, all this logic is in one place.
With organized, factory-based creation, class instantiation is easier to analyze and understand. It can be changed by editing just one method, not many code locations.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on May 26, 2023 (edit).
Home
Changes
© 2007-2025 Sam Allen