面向对象的编程,并不是类越多越好
举例:简单工厂类实现计算器的简单运算
产生简单工厂类
public class OperateFactory { public static Operate CreateOperate(string operate) { Operate oper= null; switch(operate) { case "+": oper = new OperateAdd(); break; case "-": oper = new OperateMinus(); break; case "*": oper = new OperateMulti(); break; case "/": oper = new OperaterDiv(); break; default: break; } return oper; } }简单工厂类
public abstract class Operate { private double numberA; private double numberB; 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.0; return result; } //若子类没有重写父类的虚方法,父类对象必须强制转换为子类,才可以调用子类的方法; //若子类重写了父类的虚方法,则直接调用父类的方法即可。 }加法类
public class OperateAdd : Operate { public override double GetResult() { double result = 0; result=NumberA+NumberB; return result; } }减法类
public class OperateMinus : Operate { public override double GetResult() { double result = 0; result = NumberA -NumberB; return result; } }乘法类
public class OperateMulti : Operate { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } }除法类
public class OperaterDiv : Operate { public override double GetResult() { double result = 0; if(NumberB==0) { throw new Exception("Cannot div zero"); } else { result = NumberA / NumberB; } return result; } }用户
class Program { static void Main(string[] args) { Operate op; op = OperateFactory.CreateOperate("*"); op.NumberA = 10; op.NumberB = 70; Console.WriteLine("{0}",op.GetResult()); Console.Read(); } }..