工厂模式(Factory Pattern)是Java中常用的设计模式之一,属于创建型模式,它提供了在创建对象时不会对客户端暴露创建的逻辑,只是通过使用一个共同的接口来指向新创建的对象。
我们通过一个简单的例子来说明,大家都知道电脑的核心是CPU,CPU提供运算处理数据,CPU又分为单核,双核,四核等。在电脑的角度想,电脑并不关心CPU是如何制造的,只要可以插入到主板的CPU卡槽中可以使用就行。在我们需要的CPU的时候,只要告诉厂家型号即可获取我们要的CPU。
类图:
/**
* CPU接口
*/
public interface CPU {
void compute();
}
/**
* 单核实现
*/
public class Pitone implements CPU {
@Override
public void compute() {
System.out.println("1+1=2");
}
}
/**
* 双核实现
*/
public class Pittwo implements CPU {
@Override
public void compute() {
System.out.println("1+1=2");
}
}
/**
* 四核实现
*/
public class Pitfour implements CPU {
@Override
public void compute() {
System.out.println("1+1=2");
}
}
/**
* CPU工厂
*/
public class CPUFactory {
public CPU getCPU(String num) {
CPU cpu = null;
if ("4".equals(num)) {
cpu = new Pitfour();
} else if ("2".equals(num)) {
cpu = new Pittwo();
} else {
cpu = new Pitone();
}
return cpu;
}
}
public class Client {
private CPU cpu;
public static void main(String[] args) {
Client client = new Client();
CPUFactory factory = new CPUFactory();
client.cpu = factory.getCPU("2");
client.cpu.compute();
}
}
CPU这个类是个接口,单核、双核、四核的CPU实现compute接口,我们在一个CPUFactory来实现创建CPU的过程,对外隐藏创建的逻辑,在需要CPU实例的地方,使用CPUFactory的getCPU()方法来获取CPU的实例。