抽象工厂设计模式在3层结构开发中的应用.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《抽象工厂设计模式在3层结构开发中的应用.pdf》由会员分享,可在线阅读,更多相关《抽象工厂设计模式在3层结构开发中的应用.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大庆石油学院学报J O U R N A LO FD A Q I N GP E T R 0 1 E U MI N S T I T U T E第3 3 卷第3 期2 0 0 9 年6 月V 0 1 3 3N o 3J u n 2 0 0 9抽象工厂设计模式在3 层结构开发中的应用华铨平1,庞倩超1,谢颖2(1 浙江纺织服装技术学院机电与信息分院,浙江宁波3 1 5 2 1 1 I2 浙江纺织服装技术学院现代教育技术中心浙江宁渡3 1 5 2 1 1)摘要:分析了抽象工厂模式及其优点,并将抽象工厂模式3 层架构软件系统应用于联机考试系统中抽象工厂模式对扩展开放,对修改封闭通过扩展增强其功能,增强程序
2、的灵活性和可扩展性。降低升级和移植的复杂度。可以有效地提高代码重用抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口可降低模块问的耦合性。最大限度地实现软件复用关诩:设计模式l 抽象工厂,3 层结构;模式复用中圈分类号:T P 3 1 1 5 4文献标识码:A文章编号:1 0 0 0 1 8 9 1(2 0 0 9)0 3 0 1 1 2 一0 4模式复用理论是面向对象的软件复用理论中设计结果复用的重要技术和理论软件复用中极其重要的复用方式是设计结果的复用,设计结果的复用包括提取可复用的设计构件和模式复用基于构件的软件开发可使这些构件对象模型的构件开发者像搭积木一样快速构造应用程序 1
3、由于基于构件的复用尚存在很多有待解决的问题,所以目前人们将复用的重点转向基于模式的复用通过理论研究和实践总结,共给出2 3 种设计模式,部分模式被广泛地应用于各种软件设计 2 软件设计的目标应具有较高的灵活性、可扩展性和复用性,灵活性和可扩展性是可复用性的基础在实际的3 层架构设计中,由于底层数据处理层主要完成商业逻辑层和数据库之间的数据存取和并发操作等,同一个软件系统通常要面临不同的底层数据库,虽然底层数据库不同,但是很多商业逻辑还是相似的,数据库的作用主要是查找、插入、更新和删除等几项操作这些特点可归结为可变化的是具体的数据库,不变的是对于数据库的操作模式的本质是实现对变化的封装,基于复用
4、原则设计的系统应该满足上述2 方面的要求笔者分析抽象工厂模式的工作原理和使用背景,并用抽象工厂模式解决在实际的3 层架构模式中针对不同数据库的设计方法1抽象工厂设计模式抽象工厂模式是G O F2 3 种设计模式的一种,属于创建型模式抽象工厂设计模式的概念:“提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类”3-4 3 这句话可理解为软件应该具有一定的灵活性,以适应外部需求可能的变化;另外,必须把这种灵活性所带来的软件内部的复杂性封装起来,为外界提供一个简单而稳定的访问接口软件系统中实体模块的通信表现为接口或者抽象类的通信,变化的部分通过继承接口或实现抽象类进行封装。系统的可插
5、入性和可扩展性得到很好的体现,同时由于底层需求的变动不会波及到其它子系统或模块,系统高层会表现出很好的稳定性和可维护性1 1 应用背景在软件系统设计过程中,常常会碰到针对不同的子系统进行一系列相同或相似的复杂操作,并且对于子系统的规模不能精确的评估,也就是说,系统必须具有很好的扩展性,以应对用户需求的不断扩大同时,用户针对不同子系统的操作必须要屏蔽系统内部数据通信的差异性,即用户感知不到不同子系统之间操作的差别,这是抽象工厂模式的具体应用背景在抽象工厂模式中,客户端可以提出不同的要求,系统收稿日期:2 0 0 9 0 2 1 6 l 审稿人:黄崇本;编辑:王文礼作者简介:华铨平(1 9 6 8
6、 一)男硬士副教授主要从事计算机软件及人工智能方面的研究1 1 2 万方数据第3 期华铨平等:抽象工厂设计模式在3 层结构开发中的应用设计者为客户端提供的是一个接口,这种关系是简单和稳定的下,创建多个产品族中的产品对象3 层架构系统设计过程中,系统的具体结构和访问方式的特点:具体工厂有S q l S e r v e r,O r a c l e,A c c e s s3 种,每一具体工厂可以创建出分属于不同产品等级结构的一个产品族中的所有对象,即学员产品、管理员产品和教员产品,见图1 软件系统设计根据实际情况对需求进行类似的罗列,即有效划分,这是使用这种模式的前提使用抽象工厂模式应考虑:(1)一
7、个系统不应当依赖于产品类实例如何被创建、组合和表达的细节(2)这个系统有多于一个的产品族,而系统只消费其中某一产品族客户端在不必指定产品的具体类型情况瑙喏 L产品等级结构图1 抽象工厂设计模式概念描述(3)同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来(4)系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现1 2 系统设计结构与实现抽象工厂设计模式的结构见图2 由图2 可知,整个模式中参与的角色主要有:(1)抽象工厂角色A b s t r a c t F a c t o r y 它是工厂方法模式的核心,即为客户端提供一个统一的接口,用户不需要知道
8、系统内部的具体实现它的作用图2 抽象工厂设计模式结构是为继承并实现于它的子类提供一个统一的标准它与应用系统商业逻辑无关(2)抽象产品角色A b s t r a c t P r o d u c t A,A b s t r a c t P r o d u c t B 它的主要功能、职责是提供实体产品C o n-c e r a t e P r o d u c t A 和C o n c e r a t e P r o d u c t B 的访问接口(3)实体工厂C o n c e r a t e F a c t o r y l 和C o n c e r a t e F a c t o r y 2 它的
9、主要功能、职责是生产实体产品它直接在客户端的调用下创建产品的实例,含有选择产品对象的逻辑(4)实体产品角色C o n c e r a t e P r o d u c t A l,C o n c e r a t e P r o d u c t A 2,C o n c e r a t e P r o d u c t B l,C o n c e r a t e P r o d u c t B 2 它的主要功能、职责是实现自己的功能抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例,这是客户端的最终需求2应用联机考试系统是基于O O P 实现的3 层架构应用软件系统,通过在3 层结构中使用抽象
10、工厂设计模式,为联机考试系统提供了多种数据库操作的无缝移植联机考试系统不仅可以用S Q LS e r v e r 作为数据库,而且只做少量修改就可移植到其它数据库平台,包括A c c e s s 数据库和O r a c l e 数据库等3 层结构是指表示层、业务逻辑层和数据访问层在数据访问层,通过使用抽象工厂设计模式支持系统实现多种数据库的访问以A c c e s s 和S Q L S e r v e r 数据库为实例,展示抽象工厂模式下的数据库访问实现的类图结构,见图3 1 1 3 万方数据大庆石油学院学报第3 3 卷2 0 0 9 年2 1 实现数据访问接口p u b l i ci n t
11、 e r f a c eI S t u d e n t S e r v i c e?抽象产品A 提供学员信息数据访问接口p u b l i ci n t e r f a c eI A d m i n S e r v i c e?抽象产品B 提供管理员信息数据访问接口p u b l i cc l a s sS q l S t u d e n t S e r v i c e:I S t u d e n t S e r v i c e 具体产品A 1 提供学员信息数据访问圈3抽象工厂设计模式与项目中使用的类、接口之问的对应关系p u b l i cc l a s sS q l A d m i n S
12、 e r v i c e:1 A d m i n S e r v i c e-具体产品B 1 提供管理员信息数据访问p u b l i cc l a s sA c c e s s S t u d e n t S e r v i c e:I S t u d e n t S e r v i c e)具体产品A 2 提供学员信息数据访问p u b l i cc l a s sA c c e s s A d m i n S e r v i c e:I A d m i n S e r v i c e)具体产品B 2 提供管理员信息数据访问实现接口的类与接口的定义严格一致,接口不依赖于具体的实现,它彻底消
13、除了接口的使用者和接口的实现者之间的耦合关系在联机考试系统中,业务逻辑层通过学员信息访问接口I S t u d e n t S e r v i c e 实现数据访问时,不论访问哪种数据库,都会得到相同的效果2 2 实现数据访问对象创建功能在实现数据访问功能后,实现业务逻辑层通过统一的方式调用数据访问层的方法具体实现在项且中添加3 个类:抽象工厂(A b s t r a c t e r D A L F a c t o r y)类,用于提供数据访问对象创建功能;S Q LS e r v e r 具体工厂(S q l D A L F a c t o r y)类,用于封装S Q LS e r v e
14、r 数据访问对象的创建;A c c e s sS e r v e r 具体工厂(A c c e s sD A L F a c t o r y)类,用于封装A c c e s sS e r v e r 数据访问对象的创建实现抽象工厂类:p u b l i ca b s t r a c tc l a s sA b s t r a c t D A L F a c t o r y用反射实现创建工厂的选择p u b l i cs t a t i cA b s t r a c t D A L F a c t o r yC h o o s e F a c t o r y()“提供数据访问对象创建功能(抽象工
15、厂提供抽象产品)p u b l i ca b s t r a c tI S t u d e n t S e r v i e eC r e a t e S t u d e n t S e r v i c e()p u b l i ca b s t r a c tI A d m i n S e r v i e eC r e a t e A d m i n S e r v i e e()I 实现S Q LS e r v e r 具体工厂类:p u b l i cc l a s sS q l D A L F a c t o r y:A b s t r a c t D A L F a c t o r y
16、 p u b l i co v e r r i d eI S t u d e n t S e r v i c eC r e a t e S t u d e n t s e t r i c e()r e t u r nn e wS t u d e n t S e r v i c e()Ip u b l i co v e r r i d eI A d m i n S e r v i c eC r e a t e A d m i n S e r v i c e()r e t u r nn e wA d m i n s e t r i c e()I)实现A c c e s s 具体工厂类:1 1 4
17、万方数据第3 期华铨平等:抽象工厂设计模式在3 层结构开发中的应用p u b l i cc l a s sA c c e s s D A L F a c t o r ysA b s t r a c t D A L F a c t o r y p u b l i co v e r r i d eI S t u d e n t S e r v i c eC r e a t e S t u d e n t S e r v i c e()r e t u r nD e wS t u d e n t S e r v i e e()I)p u b l i co v e r r i d eI A d m i
18、n S e r v i c eC r e a t e A d m i n S e r v i c e()r e t u r nn e wA d m i n S e r v i c e()I)2 3 业务逻辑层调用数据访问层方法在业务逻辑层调用数据访问层方法时,首先通过抽象工厂找到实体工厂,然后将实体工厂中生产的实体产品对象赋值给抽象产品,通过抽象产品调用数据访问方法这时与业务逻辑层进行通信的只是抽象工厂和抽象产品业务逻辑层并不知道实体产品是由S Q LS e r v e r 实体工厂还是由A c c e s s 实体工厂生产的此时,不论使用哪种数据库,这种改变对业务逻辑层、表示层没有任何影响,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽象 工厂 设计 模式 结构 开发 中的 应用
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内