设计模式之:Factory模式进化论(2)扩展

来源:互联网 发布:西南财经网络教育 编辑:程序博客网 时间:2024/05/31 19:24

设计模式之:Factory模式进化论(1)为什么要有工厂模式中,说明了为什么要使用工厂模式的简单理由,这里总结一下工厂模式的扩展应用.

(1)底层多种实现的转换

现实生活中不同的工厂生产同一个产品的时候,产品的细节可能会存在差异,工厂模式也可以达到同样的效果,例如系统开发系统的初期时候,使用文件的方式来存储数据,当系统到达一定规模是改用数据库来存放数据,当然可以声明一个持久化的接口,然后开发分别针对于数据库存储以及文件存储的实现类,系统规模较小的话这可能是比较好的选择,如果系统规模较大,涉及模块较多,那么当更换实现的时候,所有实例化实现类的地方都要调整,当然这也会涉及设计模式之:Factory模式进化论(1)为什么要有工厂模式中提到的问题,下面来看一下用工厂模式怎么解决这个问题,首先看一下系统的类图.


假设系统有两个模块,Customer以及Provider,如果不采用工厂模式,那么如果到系统的持久技术发生了改变,那么系统中所有涉及到持久层实现类的地方都要进行调整,如果系统的模块很多,这可能会是个麻烦的事情.如果采用工厂模式,如上图所示,只需要在实例化工厂对象的地方进行调整,可以达到最终的目的.


(2)测试框架中的应用

比如说实际的系统采用数据库作为存储介质,但是为了测试的方便性,或者说测试的情况下不打算使用数据库作为存储的介质,这个问题应该怎么解决了?首先来看一下简单的思路

测试执行步骤:

一:在SystemTest中创建一个System对象且把SystemTest的实例传递给System.

二:在SystemTest中调用System对象中的insert方法

三:System调用Stored实现类的insert方法(SystemTest.insert)

四:System调用的的数据流转到了SystemTest中,insert的实现也是由SystemTest来控制的,例如可以把要保存的数据打印出来


接下来看看用工厂模式实现的方式:

一:在SystemTest中创建一个System对象(SystemTest把自己的引用传递给System),System通过StoredFactory的实现类方式来获得Stored实现类的工厂.

二:在SystemTest中调用System对象中的insert方法

三:System调用Stored实现类的insert方法(SystemTest.insert)

四:System调用的的数据流转到了SystemTest中.这样一来SystemTest对于System的调用到最后的执行都可以起到很好的控制


原创粉丝点击