具体代码: using System; // 二元运算的基类 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) { result = NumberA / NumberB; } else { throw new Exception("can't divided by 0"); } return result; } } // 工厂类 public class OperationFactory { public static Operation CreateOperation(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; } return oper; } } //测试类 public class Test { public static void Main(string[] args) { //运算基类 Operation oper; Console.WriteLine("请输入运算符"); // 运算符 string strOperation = Console.ReadLine(); // 利用工厂类生成运算类 oper = OperationFactory.CreateOperation(strOperation); //输入数A、B Console.WriteLine("输入数A"); oper.NumberA = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("输入数B"); oper.NumberB = Convert.ToDouble(Console.ReadLine()); //获得结果并输出 double result = oper.GetResult(); Console.WriteLine("结果是:" + result); } }