zoukankan      html  css  js  c++  java
  • 01 简单工厂模式

    简单工厂模式

    1. 接口

    //计算器基类
    public interface Operation {
    
        /**
         * 获取计算结果
         *
         * @param numberA numberA
         * @param numberB numberB
         * @return result
         */
        double getResult(double numberA, double numberB);
    }
    

    2. 实现类

    //加法
    public class AddOperation implements Operation {
    
        @Override
        public double getResult(double numberA, double numberB) {
            return numberA + numberB;
        }
    }
    
    //减法
    public class SubOperation implements Operation {
        @Override
        public double getResult(double numberA, double numberB) {
            return numberA - numberB;
        }
    }
    
    //乘法
    public class DivOperation implements Operation {
        @Override
        public double getResult(double numberA, double numberB) {
            return numberA * numberB;
        }
    }
    
    //除法
    public class MulOperation implements Operation {
        @Override
        public double getResult(double numberA, double numberB) {
            if (numberB == 0) {
                throw new ArithmeticException("除数不能为零");
            }
            return numberA / numberB;
        }
    }
    

    3. 工厂类

    //计算器工厂
    public class OperationFactory {
    
        /**
         * 获取具体计算器
         *
         * @param operate 计算类型
         * @return 计算器
         */
        public static Operation createOperate(String operate) {
            Operation operation = null;
            switch (operate) {
                case "+":
                    operation = new AddOperation();
                    break;
                case "-":
                    operation = new SubOperation();
                    break;
                case "*":
                    operation = new DivOperation();
                    break;
                case "/":
                    operation = new MulOperation();
                    break;
            }
            return operation;
        }
    }
    

    4. 运行结果

    @Slf4j
    public class Client {
        public static void main(String[] args) {
            try {
                OperationService operate = OperationFactory.createOperate("/");
                if (Objects.isNull(operate)) {
                    log.info("没有此计算器");
                }
                double result = operate.getResult(5.1, 0);
                log.info("计算结果: {}", result);
            } catch (Exception e) {
                log.error("计算异常, msg:{}", e.getMessage(), e);
            }
        }
    }
    
  • 相关阅读:
    开启safe_mode之后对php系统函数的影响
    解析posix与perl标准的正则表达式区别
    教你在不使用框架的情况下也能写出现代化 PHP 代码
    杭州逆行崩溃小伙首度回应
    PHP命令行脚本接收传入参数的三种方式
    PHP魔术方法使用总结
    Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
    重定向
    P2141 珠心算测验
    T2695 桶哥的问题——吃桶
  • 原文地址:https://www.cnblogs.com/s-star/p/14076800.html
Copyright © 2011-2022 走看看