Java设计模式_(创建型)_工厂模式


引用百科:

   工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的。


但是如果有很多的对象需要去new创建,并且设置各种属性,几十几百,如此代码就非常纠结了,

于是乎工厂模式就出现了,称为工厂模式其实就是如同现实中的工厂一样,将需要做的事集中起来,将产品的实现流程化,将通用功能实现可重用性,

一个小例子实现工厂:

 比如说芯片cpu厂商老板说,需要根据不同参数生产出不同的cpu,那么有了这个需求,就可以创建个工厂,如下:

CPU工厂,

CPU接口,

各类CPU的具体功能实现,

如此便可以根据不同的需求生产不同的CPU ,同时如果有新需求,也可以新增CPU实现,只要实现CPU 统一规范,即可实现插拔式扩展。


Java设计模式_(创建型)_工厂模式_第1张图片


简单实现代码如下,

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();
	}
}


通过以上工厂模式代码,便可以轻松实现,根据同一产品的不同需求,自动生成该产品的不同版本类型,无需关注具体的实现!


你可能感兴趣的:(设计模式篇)