设计模式——简单工厂模式

实现计算器的功能
可维护
可复用【复制≠复用 编程的原则:用尽可能的办法去避免重复,让计算和显示分开,即让业务逻辑与界面逻辑分开,让耦合度下降,只有分离开,才可以达到容易维护或者扩展】
可扩展
灵活性好

【一】
Operation运算类:
在这里插入图片描述
在这里插入图片描述
客户端:
在这里插入图片描述
使用了封装,但是如果需要添加一个平方根运算,却需要加减乘除的运算都来参与,应该改为修改其中一个不影响另外的几个,增加运算算法也不影响其他代码。

【二】
Operation运算类(抽象类)

package factory;
public abstract class Operation {
    public double numA;
    public double numB;
    public double getResult(){
        return 0.0;
    }
}

加法运算类:

package factory;
public class AddOperation extends Operation{
    @Override
    public double getResult() {
        return numA+numB;
    }
}

减法运算类:

package factory;

public class SubOperation extends Operation {
    @Override
    public double getResult() {
        return numA-numB;
    }
}

工厂类:

package factory;
public class Factory {
    public static Operation getOperation(char ope){
        switch(ope){
            case '+':
                return new AddOperation();
            case '-':
                return new SubOperation();
            default:
                throw new RuntimeException();
        }
    }
}

客户端:

package factory;
public class MainTest {
    public static void main(String[] args) {
        Operation operation = Factory.getOperation('+');
        operation.numA = 1.0;
        operation.numB = 2.0;
        double test = operation.getResult();
        System.out.println(test);

        Operation operation1 = Factory.getOperation('-');
        operation1.numA = 3.3;
        operation1.numB = 1.0;
        System.out.println(operation1.getResult());
    }
}

如果需要增加复杂的运算,比如平方根,立方根,只要增加相应的运算子类,并修改工厂,在switch中增加分支即可。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值