看完书,用一句话来说简单工厂模式就是通过对类封装,继承,多态使用,来实现业务和界面分离。实现程序的可维护性(修改),可拓展性(添加),可重用性(保留),灵活性(移动). 只是解决对象创建问题
下面是实现计算机简单加减乘除运算来实现的简单工厂模式。
//运算类 实现业务逻辑和界面逻辑的分离 从而容易维护和拓展 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("除数不能为零"); } result = NumberA / NumberB; return result; } }
//工厂主要是创建不能类对象 class OperationFaction { 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; } return oper; } }
static void Main(string[] args) { //只是实现调用 Operation oper; oper = OperationFaction.createOperate("+"); oper.NumberA = 1; oper.NumberB = 2; double result = oper.getResult(); Console.WriteLine(result); Console.ReadLine(); }
原文:http://blog.csdn.net/buyingfei8888/article/details/20949291