设计模式-工厂模式

工厂模式是简单工厂模式的完善版本,它相较于简单工厂模式,更加符合开闭原则,但也更加复杂。

首先我们回忆一下简单工厂模式中的例子,在这个例子中,我们创建了计算器算法的简单工厂,通过判断传入的参数,分别创建出相应的对象。这样做会有什么问题呢?当我们需要增加新的算法时,不仅要新创建一个算法类,还要去修改简单工厂,加入对新算法的判断。这样就违反了开闭原则,修改了原来的类。那么我们如何用工厂模式来重写呢?

首先需要一个工厂接口,所有的工厂都实现这个接口。

public interface IOperationFactory {
	Operation creationOperation();
}

然后加减乘除等算法,都分别创建一个具体的工厂来实现这个接口

public  class AddFactory implements IOperationFactory{
	@Override
	public Operation creationOperation(){
		return new OperationAdd();
	}
}

public class SubFactory implements IOperationFactory {
	@Override
	public Operation creationOperation() {
		return new OperationSub();
	}
}

客户端调用的时候

IOperationFactory opFactory = new AddFactory();
Operation op = opFactory.creationOperation();

op.setNumA(1);
op.setNumB(2);
System.out.println(op.getResult());

工厂方法将简单工厂的内部判断逻辑,移动到了客户端代码进行。这样开起来会比简单工厂模式更麻烦一些,开发量也更大,但更加符合开闭原则。

相关demo可以参考我的gitee仓库
https://gitee.com/akitsuki-kouzou/DesignPatternDemo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值