简单工厂方法

工厂方法顾名思义,即是创建实例的方法。简单工厂方法又称为静态工厂,因为创建实例的逻辑都封装在工厂方法内部,往往这个方法是静态的,方便Client端调用 。

代码如下:

商品的抽象接口,内部有个生产商品的方法Produce

 

public interface Product {
	void produce();
}

 具体的商品A and B, 都实现同一抽象接口Product

 

 

public class ProductA implements Product {
	@Override
	public void produce() {
		System.out.println("Produce Product A");
	}
}

public class ProductB implements Product {
	@Override
	public void produce() {
		System.out.println("Produce Product B");
	}
}

 静态工厂方法

 

 

public class SimpleFactory {
	
	public static Product getProduct(String flag) {
		Product product = null;
		if ("A".equals(flag)) {
			product = new ProductA();
		} else if ("B".equals(flag)) {
			product = new ProductB();
		} else {
			System.out.println("Not exist such Product");
		}
		return product;
	}
	
}

 客户端调用

 

 

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Product product = SimpleFactory.getProduct("A");
		product.produce();
	}

}

 

 

上面的代码基本就是一个简单工厂模式的实现,容易看出创建对象的逻辑都在工厂类的静态方法中,所以这个工厂就承担了很重要的一个责任。

如果这个时候业务有所变更,新增ProductC和ProductD两个商品,我们只要新建两个对应的类来实现Product这个接口并实现Produce方法。但是这里就要涉及到静态工厂方法的逻辑修改,增加if else的判断。这样就违背了开闭原则,即对扩展开放,对修改关闭。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值