欢迎来到天天文库
浏览记录
ID:15457236
大小:504.09 KB
页数:6页
时间:2018-08-03
《讲解三层结构和抽象工厂模式教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、讲解三层结构和抽象工厂模式这里我们结合课件,采用案例演示教学法,层层深入,大把这个难点讲解完成。前面课程已经讲解简单三层授课技巧,后续任务在此基础上实现。 操作流程:1.添加一个新的项目(类库):AccessDAL。2.修改原先的DAL层名称为SQLDAL,并修改所有的该层命名空间为SQLDAL.并修改此项目的属性的程序集名称和默认命名空间名称为SQLDAL。3.修改BLL层所有相关DAL层的引用。usingSQLDAL4.编译项目,重新生成。接口的引入和简单工厂:为什么要使用接口呢,现在的软件产品不可能指针对一个数据库,如劳资管理系统,大公司使用SQLServer,小公司可能使用acc
2、ess就够用了,那么如何让一套程序既可使用SQLServer又可使用Access作为数据库呢,答案是我们在数据访问层使用统一的接口,让访问SQLServer和Access的类都实现这个接口,然后通过接口调用具体的实现。具体的演示方法是在前面代码的基础上点击DAL层的类,右键选择重构,选择提取接口,这样一个接口就出现了。如下图所示:图三提取接口我们这里为了更加的规范,建立一个接口层的类库IDAL,将这个接口移到这个类库IDAL中,要注意删除原有在SQLDAL中的接口。重新编译,修改错误。修改原先引用接口的代码:IDAL.IGuestService在数据访问层添加对IDAL的引用,并增加us
3、ingIDAL代码。同时调整拷贝到IDAL层的接口相关的代码,修改其命名空间。namespaceIDAL。在业务逻辑层增加对IDAL的引用。在IDAL添加对Models的引用。接口建立以后,为了可以使用Access库,我们添加新的数据层AccessDAL,再添加一个GuestService类(注意必须和原有的Sqldal层类同名)并实现现刚刚创建的接口。为了方便演示有一个技巧,你可以复制上面的代码到AccessDAL类库中,并做对应修改,返回值为空或true即可。最后修改BLL层的调用方式为接口调用,用接口隐示的声明,用类显示的实现调用,对于访问SQLServer数据库具体的代码是:pr
4、ivatereadonlyIGuestServiceguestService=newGuestService();如果需要访问Access库,稍加改动就变成访问Access库,只需要修改对应的usingAccessDAL;逻辑层代码变为:接口就可以实现访问不同的数据库我们为什么采用工厂模式呢,原因有两个,第一是客户提出新需求,自己不改变源码就更换为其他数据库;第二是从开发公司考虑,为了适应不同的数据库,每次需要修改BLL层源代码,再编译程序,发布程序比较麻烦。那么具体实现步骤是创建新的工厂项目类,添加类DALFactory,然后在类中实现返回实现产品接口的方法,通过Web.Config读
5、取配置数据,针对不同数据库,返回不同实现接口的对象,最后修改BLL层的调用方式为工厂调用,用接口隐示声明,;这样我们就可以通过修改配置文件实现不同数据库的访问,实现了简单工厂的设计模式。(不深入,直接转入用抽象工厂。)抽象工厂:有了简单工厂,为什么还要使用抽象工厂呢,原因是一个大的软件项目中包括很多的模块,不同的模块就要创建不同的接口,那么如何返回很多实现接口的对象呢,在简单工厂模式中只能编写多块相似的代码,通过判断数据库的类型返回具体的对象,这样就造成大量的代码冗余,这里采用优化的方法,即抽象公共的部分,通过抽象类调用具体的实现类,可以产生一批有关联的产品,例如通过配置文件读取是Acc
6、ess数据库类型,那么得到是Access的工厂,工厂里的产品都是通过访问Access数据库数据产生的产品。可以说对于简单工厂模式一次只能创建一个对象,而对于抽象工厂模式实现一次创建一系列相互依赖对象的需求。具体的演示实现步骤是:为表示层增加一个app.config。然后添加一个项目DALFactory,并增加一个类:AbstractFactory。添加相应的抽象方法CreateGuestService,通过读取对应的配置文件app.config,返回实现抽象类的工厂;1.为工厂类添加引用System.configuration。1.增加代码stringpath=Configuration
7、Manager.AppSettings["DBType"].ToString();,获取app。config中的配置数据库选项信息。2.修改工厂代码如下:3.4.逻辑层修改如下:去掉对SQLDAL的引用,更改为引用工厂。usingDALFactory;这样我们就将数据访问层的内容进行了细化,首先引入接口,然后引入抽象工厂模式,通过演示让学员明白为什么要抽象工厂以及如何使用它。具体的讲解思路如下图4所示:图四细化数据访问层这里我们演示
此文档下载收益归作者所有