可维护、可复用、可扩展、灵活性好。 很多对象到底要实例化谁,将来会不会增加实例化对象。 用一个类(工厂)来做这个创造实例的过程。
/// <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();
结构大体这样,若需要改动某个算法的逻辑,只需要改动它自己即可不会对其他算法造成影响。想要加减算法也很方便不会影响其他逻辑。