简单工厂模式
业务和界面分离
//一个计算器的例子 //不同计算的共性抽象于此类 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() { double result = 0; return result; } } //加法类 //默认修饰符是internal,当前工程中的代码可访问 class OperationAdd : Operation { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } //工厂类 public class OperationFactory { public static Operation createOperate(string operate) { Operation oper = null; switch(operate) { case "+": oper = new OperationAdd(); break; //... } return oper; } } //客户端代码 Operation oper; //工厂类本身没有实例化 oper = OperationFactory.createOperate("+"); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult();