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