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

    软件开发中为啥需要设计模式?以下四幅画足以说明设计模式的重要性:

    那么工厂模式说的是什么呢,解决了什么问题呢:

            其实工厂模式解决的是到底实例化谁,将来会不会增加实例化的对象,比如以下例子中需要增加一个开方的运算等,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂,根据条件创造出不同的实例来处理不同的业务。

    源码如下:

    package gongchang_designmode;

    public  class FactoryMian {

    public static void main(String[] args) {

    // TODO 自动生成的方法存根

    Operation oper;

    oper=(new FactoryMian()).new OperationFactory().createOperate("+");

    oper.set_numberA(1);

    oper.set_numberB(2);

    double result=oper.getResult();

    System.out.print(result);

    }

    /// <summary>

        /// 运算类

        /// </summary>

        public class Operation

        {

            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;

    }

    private double _numberA = 0;

            private double _numberB = 0;

            

            

            /// <summary>

            /// 得到运算结果

            /// </summary>

            /// <returns></returns>

            public  double getResult()

            {

                double result = 0; 

                return result;

            }

           

        }

        /// <summary>

        /// 加法类

        /// </summary>

        class OperationAdd extends Operation

        {

             public double getResult()

            {

                double result = 0; 

                result = get_numberA() + get_numberB();

                return result;

            }

        }

        /// <summary>

        /// 减法类

        /// </summary>

        class OperationSub extends Operation

        {

           public  double getResult()

            {

                double result = 0;

                result = get_numberA() - get_numberB();

                return result;

            }

        }

        /// <summary>

        /// 乘法类

        /// </summary>

        class OperationMul extends Operation

        {

            public  double getResult()

            {

                double result = 0;

                result = get_numberA() * get_numberB();

                return result;

            }

        }

        /// <summary>

        /// 除法类

        /// </summary>

        class OperationDiv extends Operation

        {

            public  double getResult()

            {

                double result = 0;

                if (get_numberB()==0)

    try {

    throw new Exception("除数不能为0。");

    } catch (Exception e) {

    // TODO 自动生成的 catch 块

    e.printStackTrace();

    }

                result = get_numberA() / get_numberB();

                return result;

            }

        }

        /// <summary>

        /// 运算类工厂

        /// </summary>

        class OperationFactory

        {

            public  Operation  createOperate(String operate)

            {

                Operation oper = null;

                switch (operate)

                {

                    case "+":

                        

                            oper = new OperationAdd();

                            break;

                        

                    case "-":

                        

                            oper = new OperationSub();

                            break;

                        

                    case "*":

                        

                            oper = new OperationMul();

                            break;

                        

                    case "/":

                        

                            oper = new OperationDiv();

                            break;

                        

                   

                }

                return oper;

            }

        }

    }

    UML类图:

  • 相关阅读:
    第一节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
    Tensorflow 错误:Unknown command line flag 'f'
    Python 多线程总结
    Git 强制拉取覆盖本地所有文件
    Hive常用函数 傻瓜学习笔记 附完整示例
    Linux 删除指定大小(范围)的文件
    Python 操作 HBase —— Trift Trift2 Happybase 安装使用
    梯度消失 梯度爆炸 梯度偏置 梯度饱和 梯度死亡 文献收藏
    Embedding 文献收藏
    深度学习在CTR预估中的应用 文献收藏
  • 原文地址:https://www.cnblogs.com/xinanheishao/p/6962296.html
Copyright © 2011-2022 走看看