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);
            }
        }
    }
    
  • 相关阅读:
    动画效果(二)
    动画效果(一)
    高级事件(二)
    高级事件(一)
    事件对象(二)
    事件对象(一)
    使用jquery ajax代替iframe
    SQL语句汇总(终篇)—— 表联接与联接查询
    SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
    SQL语句汇总(二)——数据修改、数据查询
  • 原文地址:https://www.cnblogs.com/s-star/p/14076800.html
Copyright © 2011-2022 走看看