@#
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; } }
##
class OperationAdd:Operation //加法类 { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } class OperationSub: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; case "-": oper = new OperationSub(); break; } return oper; } }
##
class Program //前台代码 { static void Main(string[] args) { Operation oper = OperationFactory.CreateOperate("+"); oper.NumberA = 20; oper.NumberB = 80; double result = oper.GetResult(); Console.WriteLine(result); } }