设计模式入门-简单工厂模式

简单工厂模式的根本就在于不是由客户端编程者来实例化对象,而且可以把选择需要实例化那一种对象的具体逻辑放入工厂之内,客户端只需要把需要实例化的对象的条件传入即可。

好处:可以把实例化这种细节封装在工厂里面

坏处:工厂想要扩展就需要修改工厂类的代码,违反了开放-封闭原则。

下面的代码是两个数的加减乘除,应用了简单工厂模式


 

具体计算类的抽象父类,对外的接口是接口或者抽象类有利于扩展,比如我想增加计算方法只需要增加计算类然后继承此抽象类,而对外的接口不变

CalBase


加法类

CalAdd

 
减法类

CalSub

 
乘法类

CalMul

 
除法类(此处的非零错误处理不好,在此种计算类里不能显示具体信息,而应该返回错误信息或者异常,不过这里不改了,因为我懒~~,以后同理)

CalDiv

 
工厂类,可以看到计算类的实例化和判断都是在此进行的
(第24行抛了异常……不妥)

CalFactory

 

测试类,我们在应用时只需要传入我们需要得到什么样的计算类实例,第8行在引用声明也是用的抽象父类
(13-16行的捕捉异常……很不妥……很无意义……)

CalTest

 

 

posted on 2009-01-06 11:45  lostheaven  阅读(247)  评论(0编辑  收藏  举报

导航