Design Pattern - Abstract Factory
Abstract Factory pattern adds another layer of abstraction for Factory pattern. If we compare Abstract Factory with Factory, it is pretty obvious that a new layer of abstraction is added.
Abstract Factory is a super-factory which creates other factories. We can call it “Factory of factories”.
Tables
- Abstract Factory class diagram
- Abstract Factory Java code
- Difference between Factory and Abstract Factory pattern
- Real use example
- References
Abstract Factory class diagram ⤴

Abstract Factory Java code ⤴
interface CPU {
void process();
}
interface CPUFactory {
CPU produceCPU();
}
class AMDFactory implements CPUFactory {
public CPU produceCPU() {
return new AMDCPU();
}
}
class IntelFactory implements CPUFactory {
public CPU produceCPU() {
return new IntelCPU();
}
}
class AMDCPU implements CPU {
public void process() {
System.out.println("AMD is processing...");
}
}
class IntelCPU implements CPU {
public void process() {
System.out.println("Intel is processing...");
}
}
class Computer {
CPU cpu;
public Computer(CPUFactory factory) {
cpu = factory.produceCPU();
cpu.process();
}
}
public class Client {
public static void main(String[] args) {
new Computer(createSpecificFactory());
}
public static CPUFactory createSpecificFactory() {
int sys = 0; // based on specific requirement
if (sys == 0)
return new AMDFactory();
else
return new IntelFactory();
}
}
Difference between Factory and Abstract Factory pattern
In short,
- Abstract Factory design pattern creates Factory
- Factory design pattern creates Products
Real use example ⤴
Actually, this is a very important concept of modern frameworks. Here is a question about this.
Leave a Comment