可维护、可复用、可扩展、灵活性好。 很多对象到底要实例化谁,将来会不会增加实例化对象。 用一个类(工厂)来做这个创造实例的过程。

/// <summary>
/// 抽象出父类
/// </summary>
public class Operation
{
    private double _numberA = 0;
    private double _numberB = 0;

    public double  NumberA{
        get { return _numberA; }
        set { _numberA = value; }
    }
    public double NumberB {
        get { return _numberB; }
        set { _numberB = value; }
    }
    public virtual double GetResult()
    {
        return 0;
    }
}
/// 具体算法//////////////////////////////////////////////////////////////////////////////////////////////////
public class Add : Operation
{
    public override double GetResult()
    {
        return NumberA + NumberB;
    }
}
public class Sub : Operation {
    public override double GetResult()
    {
        return NumberA - NumberB;
    }
}

/// //////////////////////////////////////////////////////////////////////////////////////////////////

public enum OperationType
{
    add,
    sub,
}
/// <summary>
/// 工厂
/// </summary>
public class OperationFactory
{
    public static Operation creatOperation(OperationType op)
    {
        Operation oper = null;
        switch (op)
        {
                case OperationType.add:
                oper = new Add();
                break;
                case OperationType.sub:
                oper = new Sub();
                break;
        }
        return oper;
    }
}

 

消费代码:
    private Operation oper = OperationFactory.creatOperation(OperationType.add);
    oper.NumberA = 1;
    oper.NumberB = 2;
    private double result = oper.GetResult();

 结构大体这样,若需要改动某个算法的逻辑,只需要改动它自己即可不会对其他算法造成影响。想要加减算法也很方便不会影响其他逻辑。

posted on 2017-09-05 17:27  Mr.糖马儒  阅读(79)  评论(0)    收藏  举报