简单工厂模式

 

1、简单工厂模式

2、题目:请用java语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。

3、UML类图

 

4、代码示例:

4.1、运算相关类:

Operation类:
import lombok.Data;

/**
 * 操作类
 */
@Data
public class Operation {

    private double numberA;

    private double numberB;

    public double calculate() throws Exception{

        double result = 0f;
        return result;

    }

}
View Code
OperationAdd类:
/**
 * 加法类
 */
public class OperationAdd extends Operation{

    @Override
    public double calculate() {
        return super.getNumberA() + super.getNumberB();
    }

}
View Code
OperationSub类:
/**
 * 减法类
 */
public class OperationSub extends Operation{

    public double calculate() {
        return super.getNumberA() - super.getNumberB();
    }

}
View Code
OperationMul类:
/**
 * 乘法类
 */
public class OperationMul extends Operation{

    public double calculate(){
        return super.getNumberA() * super.getNumberB();
    }

}
View Code
OperationDiv类:
/**
 * 除法类
 */
public class OperationDiv extends Operation{

    public double calculate() throws Exception{
        if(super.getNumberB() == 0){
            throw new Exception("除数不能为零!");
        }
        return super.getNumberA() / super.getNumberB();
    }

}
View Code

 

4.2、简单工厂类:

OperationFactory类:
/**
 * 操作工厂类
 */
public class OperationFactory {

    public static Operation creteOperate(String operate){

        Operation operation = null;
        switch (operate){
            case "+":
                operation = new OperationAdd();
            break;

            case "-":
                operation = new OperationSub();
            break;

            case "*":
                operation = new OperationMul();
            break;

            case "/":
                operation = new OperationDiv();
            break;
        }

        return operation;

    }

}
View Code

 

4.3、简单工厂模式客户端:

/**
 * 简单工厂模式客户端
 */
public class SimpleFactoryClient {

    public static void main(String[] args) throws Exception{

        Operation operation = OperationFactory.creteOperate("*");
        operation.setNumberA(3f);
        operation.setNumberB(4f);
        double result = operation.calculate();
        System.out.println(result);

    }

}
View Code

 

5、githubidemo-design-pattern

 

转载于:https://www.cnblogs.com/aibaiyang/p/11442002.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值