以计算器程序举例, 要将业务逻辑和界面逻辑分离, 使耦合度降低, 才能方便后期的维护和扩展.
public class Operation {
public static double GetResult(double, double, string) {
//todo
}
}
public static void Main(string[] args) {
Console.Write(GetResult(a, b, op));
}
如果要在Operation类中加入sqrt方法, 需要将其他运算都参与编译, 所以应该将各种运算分离.
public class Operation {
private double _numberA;
private double _numberB;
public double NumberA {
get {
return _numberA;
};
set {
_numberA = value;
};
}
public double NumberB {
get {
return _numberB;
};
set {
_numberB = value;
};
}
public abstract double GetResult();
}
class OperationAdd : Operation {
public override double GetResult() {
return NumberA + NumberB;
}
}
通过一个单独的类来创造实例, 这就是工厂.
public class OperationFactory {
public static Operation CreateOperation(string operator) {
Operation operation = null;
switch(operator) {
case "+" :
operation = new OperationAdd();
break;
default:
break;
}
return operation;
}
}
public static void Main(string[] args) {
Operation operation = OperationFactory.CreateOperation("+");
}