设计模式——简单工厂

简单工厂的实质是将消费类对具体产品类的依赖,转换成对产品接口的依赖,而其核心是在工厂中决定提供给消费类的具体产品是什么,将使用具体产品的逻辑从消费类中集中转移到工厂,简化消费类的开发。

非常简单的Demo

 

package pattern;

public class SimpleFactoryDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Comsumer comsumer=new Comsumer(Factory.getProduct());
		comsumer.doConsumerJob();
	}

}

//共同的接口或抽象父类是产品必须实现的
interface IProduct {
	void printIdentity();
}

class ProductA implements IProduct {

	@Override
	public void printIdentity() {
		// TODO Auto-generated method stub
		System.out.println("I'm A");
	}

}

class ProductB implements IProduct {

	@Override
	public void printIdentity() {
		// TODO Auto-generated method stub
		System.out.println("I'm B");
	}
}

class Comsumer {
	// 消费类只需要使用产品,而不需要关心产品的生成和具体行为
	private IProduct product;

	public Comsumer(IProduct product) {
		this.product = product;
	}

	public void setProduct(IProduct product) {
		this.product = product;
	}

	public void doConsumerJob() {
		this.product.printIdentity();
	}
}

class Factory {
	//工厂类负责决定创建那个产品,可以加入判断逻辑
	public static IProduct getProduct() {
		//这是一个非常简单的判断逻辑,决定生产A还是B
		int i = (int) (Math.random() * 20);
		if (i % 2 == 0)
			return new ProductA();
		else
			return new ProductB();
	}
}

 

其缺点在于工厂与产品类耦合非常紧密,而且判断逻辑在产品增加之后必须修改工厂类的代码。

你可能感兴趣的:(设计模式,java语言,简单工厂)