namespace SimleFactory { public class Operation { public double NumberA { get; set; } public double NumberB { get; set; } public virtual double GetResult() { double result = 0; return result; } } public class OperationAdd:Operation { public override double GetResult() { return NumberA + NumberB; } } public class OperationSub : Operation { public override double GetResult() { return NumberA - NumberB; } } public class OperationMul : Operation { public override double GetResult() { return NumberA * NumberB; } } public class OperationDiv : Operation { public override double GetResult() { if (NumberB == 0) throw new Exception("除数不能为0."); return NumberA / NumberB; } } public class OperationFactory { public static Operation CreateOperation(string operate) { Operation oper = null; switch(operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationAdd(); break; case "*": oper = new OperationAdd(); break; case "/": oper = new OperationAdd(); break; } return oper; } } }
测试代码:
Operation oper = OperationFactory.CreateOperation("+"); oper.NumberA = 1; oper.NumberB = 2; double result= oper.GetResult(); Assert.AreEqual(result, 3);