首页 > 代码库 > 设计模式之工厂

设计模式之工厂

简单工厂模式

简单工厂严格来说并不算一种设计模式,因为它违反了“开放-封边”原则。简单工厂是通过分支来判断选择实例化哪一个类。这样如果需求更改,就需要更改工厂类。这种设计是糟糕的。

工厂模式

工厂方法模式是简单工厂模式的进一步抽象和推广,由于使用了多态性,工厂方法模式保持了简单工厂模式的有点,而且克服了简单工厂模式的缺点。但它的确定是每增加一个产品就需要增加一个产品的工厂类,增加了额外的开发量。

工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的。也就是说工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。想要增加功能,本来是改工厂类的,现在是修改客户端。

抽象工厂模式

抽象工厂模式通过一个抽象的工厂接口,它里面包含所有产品创建的抽象方法。

它最大的好处是更加容易交换产品系列,具体工厂类在只需要在初始化的时候出现一次,这就使得改变一个具体工厂变的非常容易。它只需要改变具体工厂即可使用不同的产品配置。另外,它让具体创建实例过程与客户端分离,客户端通过它们的抽象接口操纵实例。

抽象工厂也是有缺陷的,抽象工厂模式可以很方便地切换两个数据库访问的代码。但是需求需要增加功能,就需要增加很多东西。

加反射

通过加上反射可以很好的避免判断分支的问题。利用字符串来实例化对象,而字符串可以写成变量,所以就去除了判断分支的问题。

利用抽象工厂模式加反射,就可以很好的解决抽象工厂的缺点。同样的,简单工厂模式加上反射,也可以去掉判断分支。这样,简单工厂模式加反射就比工厂模式更好了。


设计模式是大牛们多年经验总结出来的,我们需要细细品读,更好的体会它的思想。运用到软件设计中,使软件的灵活性、可复用性等更好。

设计模式之工厂