zoukankan      html  css  js  c++  java
  • 设计模式 之 简单的工厂模式

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

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

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

    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算法工厂和主函数
  • 相关阅读:
    C++ 引用与常量
    树的三种存储方法
    二叉树 基本运算
    Win10阻止电脑关机时弹出正在关闭应用的方法及恢复
    使用spring+quartz配置多个定时任务(包括项目启动先执行一次,之后再间隔时间执行)
    MySQL为某数据库中所有的表添加相同的字段
    Mysql定时任务详情
    MYSQL存储过程即常用逻辑
    后台发送请求,HttpClient的post,get各种请求,带header的请求
    java后台发送请求获取数据,并解析json数据
  • 原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/12635829.html
Copyright © 2011-2022 走看看