设计模式之工厂模式

在前面讨论过,简单工厂模式,我们发现,在增加新的运算类之前,还是要新增一个运算类和修改case条件,这样我们就破坏了“封闭”原则。便于以后的拓展,我们把工厂抽象成接口,让每种运算独立出来为工厂,由调用者判断调用哪个工厂方法,把简单工厂的判断逻辑放到调用者上来

具体改造:

新增一个工厂接口

public interface ICalculatorFactory {
Operation createOperation(double firstNumber,double secondNumber);
}
增加方法的工厂

public class AddFactory implements ICalculatorFactory {

	@Override
	public Operation createOperation(double firstNumber,double secondNumber) {
		// TODO Auto-generated method stub
		return new Add(firstNumber,secondNumber);
	}

}
.....

测试

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(new AddFactory().createOperation(30,20).getResult());
	}

}

简单工厂工厂和工厂模式的异同:

相同点:都是由工厂来决定业务类

不同点:1简单工厂模式,业务逻辑放在了工厂方法内,工厂模式独立出来工厂,去掉逻辑判断,主导权交给调用者

                2简单工厂模式的拓展(增加子类)需要修改工厂方法,工厂方法开放;工厂模式拓展,需要增加相应的子类工厂,子类工厂独立封闭


github源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值