• 设计模式 之 简单的工厂模式


    简单工厂模式:属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式

    简单工厂模式中:根据参数的不同返回不同类的实例

    简单工厂模式:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类

    package designPattern;
    /**
     * Operation 运算类:
     * 创建的实例通常都具有共同的父类
     */
    public class Operation {
    
        private double _numberA=0;
        private double _numberB=0;
    
        public double get_numberA() {
            return _numberA;
        }
    
        public void set_numberA(double _numberA) {
            this._numberA = _numberA;
        }
    
        public double get_numberB() {
            return _numberB;
        }
    
        public void set_numberB(double _numberB) {
            this._numberB = _numberB;
        }
    
        public double GetResult() throws Exception {
            double result=0;
            return result;
        }
    }
    /**
     * 加法运算类,继承运算类
     */
    class OperationAdd extends Operation{
        /**
         * 重写 Operation 运算类 的 GetResult方法
         * @return result
         */
        public double GetResult(){
    
            double result=0;
            result=get_numberA()+get_numberB();
            return result;
        }
    }
    /**
     * 减法运算类,继承运算类
     */
    class OperationSub extends Operation{
        /**
         * 重写 Operation 运算类 的 GetResult方法
         * @return result
         */
        public double GetResult(){
    
            double result=0;
            result=get_numberA()-get_numberB();
            return result;
        }
    }
    /**
     * 乘法运算类,继承运算类
     */
    class OperationMul extends Operation{
        /**
         * 重写 Operation 运算类 的 GetResult方法
         * @return result
         */
        public double GetResult(){
    
            double result=0;
            result=get_numberA()*get_numberB();
            return result;
        }
    }
    /**
     * 除法运算类,继承运算类
     */
    class OperationDiv extends Operation{
        /**
         * 重写 Operation 运算类 的 GetResult方法
         * @return result
         */
        public double GetResult() throws Exception {
    
            double result=0;
            if(get_numberB()==0)
                throw new Exception("除数不能为0.");
    
            result=get_numberA()/get_numberB();
            return result;
        }
    }
    Operation父子类
    package designPattern;
    /**
     * 算法工厂:
     * 专门定义一个类来负责创建其他类的实例
     */
    public class OperationFactory {
        public static Operation createOperate(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;
        }
    
        public static void main(String[] args) {
            Operation operation;
            //根据参数的不同返回不同类的实例
            operation =OperationFactory.createOperate("+");
            operation.set_numberA(1);
            operation.set_numberB(2);
            try {
                double result=operation.GetResult();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    OperationFactory算法工厂和主函数
  • 相关阅读:
    jdk8数组和List相互转换
    elementUI修改单选框样式
    StringBuffer和StringBuilder的区别
    npm install --save 与 npm install --save-dev 的区别
    视频上传到阿里云oss把视频的第一帧作为封面图的方式
    mysql建订单表还范了个order错误
    java面试JVM轰炸问题
    注意Java和JavaScript去掉字符串最后一个字符常用写法的区别
    虚拟机NAT模式连接外网
    Hadoop集群初步搭建:
  • 原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/12635829.html
Copyright © 2020-2023  润新知