初识-设计模式五 工厂模式

package com.mybatis.designpatterns.factory;

public class Add extends Operation {
    public Double getResult(){
        return getNumberA() + getNumberB();
    }
}
package com.mybatis.designpatterns.factory;

public class Subtraction extends Operation{
    public Double getResult(){
        return getNumberA() - getNumberB();
    }
}
package com.mybatis.designpatterns.factory;

public class Multiplication extends Operation {
    public Double getResult(){
        return getNumberA() * getNumberB();
    }
}
package com.mybatis.designpatterns.factory;

import lombok.Data;

@Data
abstract class Operation {  // 运算通用父类
    private Double numberA;
    private Double numberB;
    public Double getResult(){
        return 0D;
    }
}
package com.mybatis.designpatterns.factory;

public class AddFactory implements CreateFactory{

    @Override
    public Operation createOperation() {  // 加法工厂
        return new Add();
    }
}
package com.mybatis.designpatterns.factory;

public class SubtractionFactory implements CreateFactory { // 减法工厂
    @Override
    public Operation createOperation() { 
        return new Subtraction();
    }
}

 

package com.mybatis.designpatterns.factory;

public class Multiplicationfactory implements CreateFactory {  // 乘法工厂
    @Override
    public Operation createOperation() {
        return new Multiplication();
    }
}
package com.mybatis.designpatterns.factory;

public interface CreateFactory { // 抽象工厂类,
    public Operation createOperation();
}
package com.mybatis.designpatterns.factory;

public class FactoryMain {
    public static void main(String[] args) {
        CreateFactory factory = new AddFactory();
        Operation operation = factory.createOperation();
        operation.setNumberA(10D);
        operation.setNumberB(10D);
        System.out.println(operation.getResult());

        System.out.println("==============");

        CreateFactory multiplicationfactory = new Multiplicationfactory();
        Operation operation1 = multiplicationfactory.createOperation();
        operation1.setNumberA(10D);
        operation1.setNumberB(10D);
        System.out.println(operation1.getResult());

    }
}

 

 

简单工厂和工厂设计模式UML:

简单工厂:

 工厂:

开放-封闭原则:
        面对需求,对程序的改动是通过增加新的代码进行的,而不是更改现有的代码 

 

感受:总体而言简单工厂和工厂模式最大区别是面对新需求的时候,工厂模式相对于简单工厂修改的代码更少;只需要在原有的业务逻辑上增加新的代码即可满足需求

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值