zoukankan      html  css  js  c++  java
  • 简单工厂模式

     Operation运算类

        class Operation
        {
            private double _numberA = 0;
            public double NumberA
            {
                get { return _numberA; }
                set { _numberA = value; }
            }
    
            private double _numberB = 0;
            public double NumberB
            {
                get { return _numberB; }
                set { _numberB = value; }
            }
    
            public virtual double GetResult()
            {
                double result = 0;
                return result;
            }
        }

    加减乘除类

        class OperationAdd : Operation
        {
            public override double GetResult()
            {
                return NumberA + NumberB;
            }
        }
    
        class OperationSub : Operation
        {
            public override double GetResult()
            {
                return NumberA - NumberB;
            }
        }
    
        class OperationMul : Operation
        {
            public override double GetResult()
            {
                return NumberA * NumberB;
            }
        }
    
        class OperationDiv : Operation
        {
            public override double GetResult()
            {
                if (NumberB == 0)
                    throw new Exception("除数不能为0");
                return NumberA / NumberB;
            }
        }

    工厂类

        class OperationFactory
        {
            public static 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;
            }
        }

    客户端代码

                Operation oper = OperationFactory.CreateOperate("/");
                oper.NumberA = 1;
                oper.NumberB = 0;
                double result = oper.GetResult();

    总结:

      简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但此模式违背了开放-封闭原则。

  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/baiqjh/p/2840495.html
Copyright © 2011-2022 走看看