简单工厂模式和工厂方法模式

简单工厂模式:定义一个工厂类,在工厂类中通过switch或if判断,决定应该创建哪个子类对象。创建子类对象是在这一个工厂类当中进行的。

其弊端在于每次新增都要去修改这个工厂类,违反了 开放-封闭原则。

 

工厂方法模式:定义多个工厂类,每一个Operation类都对应着一个工厂类。比如我们的计算器模型,加减乘除四种运算,对应着四个工厂类。

注意:这四个工厂类并不是继承自 Operation类,只是在工厂类的方法中return  new Operation();创建一个Operation类的对象返回。

根据 理氏替换和依赖倒转原则——具体表现为面向接口编程,而不是面向实现编程。

针对多个工厂类,可以抽象出一个顶级工厂接口——OperationFactoryInterface ,所有的工厂类都实现该接口。

那么在新增操作的时候,只需要新增一个Operation类和一个对应的工厂类即可。对扩展开放,对修改关闭,没有违反开放-封闭原则。

 

在调用者发起调用的时候,使用顶级接口OperationFactoryInterface 接收结果,具体调用的工厂类交给调用者。

public static void main(String[] args) {
        OperationFactoryInterface oprFac = new AddFactory();
        Operation opr = oprFac.createOperation();
        opr.setNumberA(1);
        opr.setNumberB(2);
        double result = opr.getResult();
}

 

posted @ 2021-09-01 06:57  wumengchao1234  阅读(183)  评论(0编辑  收藏  举报