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


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

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

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

    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算法工厂和主函数
  • 相关阅读:
    HTTP协议实体的基本讲解
    了解Xcode目录结构 开发者必看
    图解oracle 之从客户端到服务端的sql追击
    iPhone开发经典语录集锦
    iphone网络编程 http请求 get / post(发送二进制文件) 总结
    iPhone 路径大全
    http发送文件的原理
    iPhone开发面试题葵花宝典
    来自mooon的最简单的日志类CSimpleLogger
    不再担心日志文件过大:通用日志滚动脚本
  • 原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/12635829.html
Copyright © 2020-2023  润新知