微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

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

抽象工厂背景:


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

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

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

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

抽象工厂类图:

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

原文地址:https://www.jb51.cc/vb/257498.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐