设计模式之:Factory模式进化论(2)扩展
在设计模式之:Factory模式进化论(1)为什么要有工厂模式中,说明了为什么要使用工厂模式的简单理由,这里总结一下工厂模式的扩展应用.
(1)底层多种实现的转换
现实生活中不同的工厂生产同一个产品的时候,产品的细节可能会存在差异,工厂模式也可以达到同样的效果,例如系统开发系统的初期时候,使用文件的方式来存储数据,当系统到达一定规模是改用数据库来存放数据,当然可以声明一个持久化的接口,然后开发分别针对于数据库存储以及文件存储的实现类,系统规模较小的话这可能是比较好的选择,如果系统规模较大,涉及模块较多,那么当更换实现的时候,所有实例化实现类的地方都要调整,当然这也会涉及到设计模式之:Factory模式进化论(1)为什么要有工厂模式中提到的问题,下面来看一下用工厂模式怎么解决这个问题,首先看一下系统的类图.
(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的调用到最后的执行都可以起到很好的控制