首页 > 学院 > 开发设计 > 正文

【设计模式】工厂模式

2019-11-09 18:20:27
字体:
来源:转载
供稿:网友

定义:

用于创建对象的接口,让子类决定实例化哪个类

 

使用场景:

生成复杂对象使用

 

代码实现:

public abstract class Factory<T extends PRoduct, D extends Store> {	public abstract void init();	public T product;	public D store;}public abstract class Product {	/**	 * 负责生产	 */	public abstract void product();}public abstract class Store {	/**	 * 负责存放产品	 */	public abstract void store();}/** * A产品和A仓库,类的具体实现(反射) * @author wangguoli * */public class ConcreteFactoryA extends Factory<ConcreteProductA, ConcreteStoreA>{	public ConcreteFactoryA(){		init();	}	@Override	public void init() {		try {			product = ConcreteProductA.class.newInstance();			store = ConcreteStoreA.class.newInstance();		} catch (InstantiationException e) {			e.printStackTrace();		} catch (IllegalaccessException e) {			e.printStackTrace();		}	}	}/** * 生产A产品具体实现 * @author Administrator * */public class ConcreteProductA extends Product{	@Override	public void product() {		System.out.println("--------------START-------------------"+"/n"+"生产A产品!!!");	}}/** * 存放A产品,具体实现 * @author wangguoli * */public class ConcreteStoreA extends Store{	@Override	public void store() {		System.out.println("A产品,放到A仓库"+"/n"+"----------------------------------");	}}/** * 测试 * @author wangguoli * */public class TestA {	public static void main(String[] args) {		Factory<ConcreteProductA, ConcreteStoreA> f = new ConcreteFactoryA();		f.product.product();		f.store.store();	}}

回忆:

写到这里,想起了Builder模式,异曲同工 。

Builder build = new ConcreteBuilder.Builder().setA().setB().create();

同是应用于,生成复杂对象。

隐藏具体生产细节。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表