namespace 简单工厂 { class Program { static void Main(string[] args) { Operation oper; string operation = string.Empty; Console.WriteLine("请输入第一个数:"); double numA = double.Parse(Console.ReadLine()); Console.WriteLine("请输入第二个数:"); double numB = double.Parse(Console.ReadLine()); Console.WriteLine("请输入运算符号(+ - * /):"); operation = Console.ReadLine(); oper = OperationFactory.createOperate(operation); oper.NumberA = numA; oper.NumberB = numB; double result = oper.GetResult(); Console.WriteLine("结果为:"+result); Console.ReadKey(); } } public class OperationFactory { public static Operation createOperate(string operate) { Operation oper = null; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; default: break; } return oper; } } 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; } } class OperationMul : Operation { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } class OperationDiv : Operation { public override double GetResult() { double result = 0; if (NumberB == 0) { throw new Exception("除数不能为0"); } return result = NumberA / NumberB; } } }
原文:http://www.cnblogs.com/xuweixia/p/3567809.html