个人重构——抽象工厂+反射+配置文件

刚起步机房时,不知道怎么加入的抽象工厂,反射,配置文件等这些东西,当时只是在七层的理解上稍微有些思路,这是当时的博客七层连连串》,回头看自己的博客时 ,感觉当时理解的还是比较深刻的,可是我想问自己,当初是怎么想到抽象工厂的?只是在“模仿”巨人吗?

当个人重构雏形已出,现在有必要重新认识一下抽象工厂,反射,配置文件

抽象工厂模式的出现就是与具体数据库访问解除了依赖,就是说对具体的数据库sql,access等)进行了抽象,俗称抽象工厂。

反射:提供了封装程序集,模块和类型的对象。反射的用法在《七层连连串》有设计。

配置文件:以UI层的配置文件为主。名称为App.config,好处就是,在程序打包后,配置文件自动生成一个文件,而用户可打开该文件进行更改,换句话说,就是避免了更改源码。

抽象工厂背景:


想要知道为什么引入抽象工厂,就得从接口入手。

为什么要使用接口呢,现在的软件产品不可能指针对一个数据库,那么如何让一套程序既可使用sql Server又可使用Access作为数据库呢,答案是我们在数据访问层使用统一的接口,让访问sql Server和Access的类都实现这个接口,然后通过接口调用具体的实现。

接口就可以实现访问不同的数据库我们为什么采用工厂模式呢,原因有两个,第一是客户提出新需求,自己不改变源码就更换为其他数据库;第二是从开发公司考虑,为了适应不同的数据库,每次需要修改BLL层源代码,再编译程序,发布程序比较麻烦。那么具体实现步骤是创建新的工厂项目类,然后在类中实现返回实现产品接口的方法,通过Config读取配置数据,针对不同数据库,返回不同实现接口的对象,最后修改BLL层的调用方式为简单工厂调用,用接口隐示声明,但是实现通过工厂创建,这样我们就可以通过修改配置文件实现不同数据库的访问,实现了简单工厂的设计模式。

有了简单工厂,为什么还要使用抽象工厂呢,原因是一个大的软件项目中包括很多的模块,不同的模块就要创建不同的接口,那么如何返回很多实现接口的对象呢,在简单工厂模式中只能编写多块相似的代码,通过判断数据库的类型返回具体的对象,这样就造成大量的代码冗余,这里采用优化的方法,即抽象公共的部分,通过抽象类调用具体的实现类,可以产生一批有关联的产品,例如通过配置文件读取是Access数据库类型,那么得到是Access的工厂,工厂里的产品都是通过访问Access数据库数据产生的产品。可以说对于简单工厂模式一次只能创建一个对象,而对于抽象工厂模式实现一次创建一系列相互依赖对象的需求。

抽象工厂类图:

抽象工厂的出现,解决了更换数据库的麻烦,可是另一个问题伴随而出,如果更改数据库,岂不是还是要动代码?按照小菜的话说,这样岂不是要写死在代码里?所以,为了解决这一问题 ,又引入了”配置文件“,详解请见下篇博客《个人重构——配置文件》。

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...