引用百科:
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的。
但是如果有很多的对象需要去new创建,并且设置各种属性,几十几百,如此代码就非常纠结了,
于是乎工厂模式就出现了,称为工厂模式其实就是如同现实中的工厂一样,将需要做的事集中起来,将产品的实现流程化,将通用功能实现可重用性,
一个小例子实现工厂:
比如说芯片cpu厂商老板说,需要根据不同参数生产出不同的cpu,那么有了这个需求,就可以创建个工厂,如下:
CPU工厂,
CPU接口,
各类CPU的具体功能实现,
如此便可以根据不同的需求生产不同的CPU ,同时如果有新需求,也可以新增CPU实现,只要实现CPU 统一规范,即可实现插拔式扩展。
简单实现代码如下,
CPU接口:
public interface Cpu {
public void run();
}
CPU接口实现:
AMD CPU :
public class AmdCpu implements Cpu {
/**
* CPU的针脚数
*/
private int pins = 0;
public AmdCpu(int pins) {
this.pins = pins;
}
@Override
public void run() {
System.out.println("AMD CPU的针脚数:" + pins);
}
}
Inter CPU:
public class IntelCpu implements Cpu {
/**
* CPU的针脚数
*/
private int pins = 0;
public IntelCpu(int pins) {
this.pins = pins;
}
@Override
public void run() {
System.out.println("Intel CPU的针脚数:" + pins);
}
}
CPU工厂:
public class CpuFactory {
public static Cpu createCpu(String type, int param) {
Cpu cpu = null;
if ("intel".equals(type)) {
cpu = new IntelCpu(param);
} else if ("amd".equals(type)) {
cpu = new AmdCpu(param);
}
return cpu;
}
}
public class Client {
public static void main(String[] args) {
Cpu cpu = CpuFactory.createCpu("amd",987);
cpu.run();
}
}
通过以上工厂模式代码,便可以轻松实现,根据同一产品的不同需求,自动生成该产品的不同版本类型,无需关注具体的实现!