1.10简单工厂模式
2020-09-14 09:36 更新
大鸟:“写得很不错吗,大大超出我的想象了,你现在的问题其实就是如何去实例化对象的问题,哈,今天心情不错,再教你一招‘简单工厂模式’,也就是说,到底要实例化谁,将来会不会增加实例化的对象(比如增加开根运算),这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂,来,我们看看这个类如何写。”
/// summary /// 运算类工厂 /// /summary 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; } return oper; } }
大鸟:“哈,看到吧,这样子,你只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了计算器的结果。”
Operation oper; oper = OperationFactory.createOperate(+); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult();
大鸟: “哈,界面的实现就是这样的代码,不管你是控制台程序,Windows程序,Web程序,PDA或手机程序,都可以用这段代码来实现计算器的功能,当有一天我们需要更改加法运算,我们只需要改哪里?”
小菜:“改OperationAdd 就可以了。”
大鸟:“那么我们需要增加各种复杂运算,比如平方根,立方根,自然对数,正弦余弦等,如何做?”
小菜:“只要增加相应的运算子类就可以了呀。”
大鸟:“嗯?够了吗?”
小菜:“对了,还需要去修改运算类工厂,在switch中增加分支。”
大鸟:“哈,那才对,那如果要修改界面呢?”
小菜:“那就去改界面呀,关运算什么事呀。”
大鸟:“我们来看看这几个类的结构图。”
以上内容是否对您有帮助:
更多建议: