- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从三层结构到抽象工厂模式软件设计
从三层结构到抽象工厂模式的软件设计
摘要:三层结构作为一种更加普适的架构设计理念,具有分散关注、松散耦合、逻辑复用、标准定义优点。工厂方法模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,在数据库连接中有广泛的应用。本文通过一个简单的实例详细介绍三层结构到抽象工厂的软件设计过程。
关键词:三层结构 抽象工厂 设计模式
首先先准备好一层用户登陆窗体的代码,即不采用分层实现的代码,在一层的基础上实现两层,再在两层的基础上实现三层,最后引入Model层。对于一层用户登陆功能,如下图所示:
在这个层的代码中提取方法,具体操作是选中代码,右键选择重构下的提取方法,这里注意不要选择用户名和用户密码,这里我们就提取到了有两个参数的方法。我们不能发现选择的代码都是针对数据操作的,为了更好的重复使用这段代码,我们一般把它放到哪里呢,引出数据访问层DAL。这里在VS2005中演示代码,填写新的类库,即数据访问层类库(DAL),将刚刚提取的方法从表示层剪切到DAL中。再在表示层添加对DAL层的引用,在按钮的Click事件中调用这个方法,我们就实现了从一层到两层的转变,从而实现了最简单的两层结构。
在实际的开发中,具体项目的业务逻辑往往比较复杂,需要写一些方法实现这些复杂的逻辑,为了重用这些代码,我们把它放到表示层和数据访问层中间,称为业务逻辑层。下面在前面代码的基础上演示三层的实现,首先添加一个新的类库即业务逻辑层BLL,然后在BLL层添加具体的方法,引用DAL层的方法,最后在表示层中首先删除对数据访问层的引用,再添加BLL层的引用,更改按钮的Click的代码为引用BLL层的方法。这样三层结构就实现了。
上面的代码我们实现的判断登陆的用户名称和密码是否正确,是一个查询功能,查询传递两个参数这么实现是可以的,但是我们往往需要对大批量的数据进行添加和修改操作,如用户信息的注册,注册的信息可能有十几项,你如何在层与层直接传递数据呢,显然使用带十几个参数的方法是比较麻烦的,在这里我们使用类的属性来传递,每次传递一个对象,这里我们称之为Model层。具体的实现方法添加新的类库,建立实体类,再依次将需要传递的参数作为属性添加到实体类中。最后添加引用,因为作为数据传递,所以每个层多要引入Model层。上述过程如图二所示:
三层结构可以让开发人员可以只关注整个结构中的其中某一层; 可以很容易的用新的实现来替换原有层次的实现;可以降低层与层之间的依赖;有利于标准化;利于各层逻辑的复用。
其次介绍接口和简单工厂,为什么要使用接口呢,现在的软件产品不可能指针对一个数据库,如劳资管理系统,大公司使用SQL Server,小公司可能使用Access就够用了,那么如何让一套程序既可使用SQL Server又可使用Access作为数据库呢,答案是我们在数据访问层使用统一的接口,让访问SQL Server和Access的类都实现这个接口,然后通过接口调用具体的实现。具体的演示方法是在前面代码的基础上点击DAL层的类,右键选择重构,选择提取接口,这样一个接口就出现了。如下图所示:
我们这里为了更加的规范,建立一个接口层的类库IDAL,将这个接口移到这个类库IDAL中。接口建立以后,为了可以使用Access库,我们添加新的数据层AccessDAL,再添加一个AccessUserDAL类并实现现刚刚创建的接口。为了方便你可以复制上面的代码和SqlHelp到AccessDAL类库中,然后将这个类库下的“Sql”替换成“OleDb”。这里注意SqlHelp里的代码也要替换成访问Oledb的。最后修改BLL层的调用方式为接口调用,用接口隐示的声明,用类显示的实现调用,对于访问SQLServer数据库具体的代码是:ISqlUserDAL dal = new Demo.DAL.SqlUserDAL();如果需要访问Access库,稍加改动就变成访问Access库,具体代码是:ISqlUserDAL dal = new Demo.AccessDAL.AccessUserDAL();
接口就可以实现访问不同的数据库我们为什么采用工厂模式呢,原因有两个,第一是客户提出新需求,自己不改变源码就更换为其他数据库;第二是从开发公司考虑,为了适应不同的数据库,每次需要修改BLL层源代码,再编译程序,发布程序比较麻烦。那么具体实现步骤是创建新的工厂项目类,添加类SimpleFactory,然后在类中实现返回实现产品接口的方法,通过Web.Config读取配置数据,针对不同数据库,返回不同实现接口的对象,最
原创力文档


文档评论(0)