• 设计模式(三)策略模式


    策略模式

    • 策略模式比简单工程模式有更高的抽象,将switch判断从业务逻辑中抽离出来,由策略类进行具体执行。更加方便增加多的策略(算法)
     enum OperationType  // 操作类型
        {
            Add,
            Square
        }
        class Operation     // 操作父类
        {
            protected double m_A;
    
            protected double m_B;
    
            public virtual double GetResult()
            {
                return 0;
            }
        }
        class OperationAdd : Operation  // 操作子类 Add
        {
            public OperationAdd(double A, double B)
            {
                m_A = A;
                m_B = B;
            }
            public override double GetResult()
            {
                return m_A + m_B;
            }
        }
        class OperationSquare : Operation  // 操作子类 Square
        {
            public OperationSquare(double A)
            {
                m_A = A;
            }
            public override Double GetResult()
            {
                return Math.Pow(m_A, 2);
            }
        }
    
        class Content // 上下文类
        {
            Operation op = null;
    
            public Content(OperationType type, double A, double B = 0f)
            {
                switch (type)
                {
                    case OperationType.Add:
                        op = new OperationAdd(A, B);
                        break;
                    case OperationType.Square:
                        op = new OperationSquare(A);
                        break;
                }
            }
            public double GetResult()
            {
                return op.GetResult();
            }
        }
    
        public void Main()  // 主方法
        {
            Content add = new Content(OperationType.Add, 1, 2);
            Content square = new Content(OperationType.Square, 2);
            add.GetResult();    // 1+2
            square.GetResult(); // 2*2
        }
    
    
  • 相关阅读:
    html5对分辨率和设备的嗅探方法
    给前端苦手的同学们一点建议——前端之所以难学,可能的原因
    css3学习笔记
    关于viewport的一些问题
    js通过as完成socket通信
    【数学】数论常识
    AbstractFactory 模式
    State 模式
    Strategy 模式
    error LNK2001
  • 原文地址:https://www.cnblogs.com/ZeroyiQ/p/12108167.html
Copyright © 2020-2023  润新知