软件体系结构之简单工厂设计模式.doc

上传人:1595****071 文档编号:33790109 上传时间:2022-08-12 格式:DOC 页数:5 大小:78.50KB
返回 下载 相关 举报
软件体系结构之简单工厂设计模式.doc_第1页
第1页 / 共5页
软件体系结构之简单工厂设计模式.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《软件体系结构之简单工厂设计模式.doc》由会员分享,可在线阅读,更多相关《软件体系结构之简单工厂设计模式.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、_简单工厂设计模式解析作者:幸刚鸿吉林省吉林市北华大学计算机科学技术学院计101班30号,(132021)摘要本文从面向对象的角度对java接口的概念、作用以及使用它的好处做分析,讲解面向接口编程的方法,结合初步接触软件开发的人员习惯,从简单工厂设计模式的概念和其结构以及用途进行解析,重点讲解简单工厂设计模式在软件开发过程中的作用和好处,通过一些实例来说明简单工厂设计模式的特点。关键字:面向对象;java接口;接口编程;简单工厂设计模式。1. 引言随着社会的进步,科技的飞速发展,当今社会所需求的各种软件应用层出不穷,所以符合时代需求的软件工程师越来越多。在面向对象设计领域,我们知道很多出色的前

2、辈总结了不少经验,许多经验在现代软件工程中已经固定为一种规范来执行。在王思飞老师的精心教导下,我接触了大话设计模式这本书1,很认真的从第一页开始看起,我了解了很多设计模式2。不过由于自己并没有做过特别大型的项目,所以很多设计模式我是用不到的,当然其中一个不属于23种GOF设计模式之一的模式我们经常会接触到,那就是简单工厂设计模式。软件开发技术人员绝大部分熟知也很精巧的运用23种GOF设计模式进行软件开发工作,不过对于初学者,有必要知道另外一种创建型模式,那就是简单工厂模式,它也叫做静态工厂方法(Static Factory Method)模式,它由一个工厂对象决定创建出哪一种产品类的实例。简单

3、工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。它并不属于一个正规的设计模式,不过很常用,所以对于初步接触软件开发的我们有必要深入的了解和学习。本文主要从接口与接口编程等方面入手,详细阐述简单工厂设计模式的概念和实例。2.Java接口和面向接口编程2.1 Java接口(1)接口的概念我的理解就是Java中的接口3就是一种特殊的抽象类,跟一般的抽象类相比,java接口里面的所有方法都是抽象方法,接口里面的所有属性都是常量。也就是说,接口里面是只有方法定义而不会有任何方法实现。(2)接口作用在学习面向对象语言时,我们都知道通常用接口来定义实现类的外观,也就是实现类

4、的行为定义,用来约束实现类的行为。使用接口,可以实现不相关类的相同行为,而不需考虑这些类之间的层次关系,接口就是实现类对外的外观。(3)使用接口的好处由于外部调用和内部实现被接口隔离开了,那么只要接口不变,内部实现的变化就不会影响到外部应用,从而使得系统更灵活,具有更好的扩展性和可维护性,这也就是所谓“接口是系统可插拔性的保证”这句话的意思。2.2 面向接口编程在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。面向接口编程是Java编程中的一个重要原

5、则。 在Java 程序设计里面,非常讲究层的划分和模块的划分。通常按照三层来划分Java程序,分别是表现层、逻辑层、数据层,它们之间都要通过接口来通讯。在每一个层里面,又有很多个小模块,一个小模块对外也应该是一个整体,那么一个模块对外也应该提供接口,其它地方需要使用到这个模块的功能,都应该通过此接口来进行调用。这也就是常说的“接口是被其隔离部分的外观”。3简单工厂设计模式3.1 简单工厂的定义通俗的理解它就是提供了一个创建实例功能,而无须关心其具体实现,有一系列功能及其相似的产品,在客户看来完全可以互相替代。当然被创建的实例的类型可以是接口、抽象类、同时也可以是具体的类。简单工厂模式是类的创建

6、模式4,其一般性结构如图1所示:图1 简单工厂模式一般性结构3.2 简单工厂模式角色和结构简单工厂模式就是一个工厂类根据传入的参数创建出符合参数的产品类的实例,以一个简单实例说明问题,如图2所示:图2 简单工厂模式结构从图2可以看出,简单工厂模式涉及到抽象产品角色、具体产品角色和工厂角色等三个角色。l 抽象产品(Product)角色:定义客户所需要的功能接口,抽象产品角色可以用一个java接口或者java抽象类实现。l 具体产品(ConcreteProduct)角色:具体实现抽象产品的实现类,可能会有多个具体产品,简单工厂模式所创建的任何对象都是这个角色的实例,它由一个具体java类实现。l

7、工厂类(Creator)角色:选择合适的实现类来创建抽象产品接口对象。工厂类在客户端的直接调用下创建产品对象,它往往由一个java具体类实现。下面就看一个例子,我们会通常都是在客户端Client创建一个实现类Impl的实例,把它赋值给一个接口APi类型的变量,然后客户端就可以通过这个变量来操作接口的功能了,此时具体的结构图如图3:图3 系统采用接口实现的结构图此时我们采用实现类创建一个接口对象,Api api = new Impl();然而我们都知道接口的思想是“封装隔离”,而Impl这个实现类,应该是被接口Api封装并同客户端隔离开的,也就是说,客户端根本就不应该知道具体的实现类是Impl。

8、所以我们使用简单工厂模式来完成这个工作,那系统结构图如图4所示:图4 系统采用简单工厂设计模式实现的结构图客户端通过简单工厂创建了一个实现接口的对象,然后面向接口编程,从客户端来看,它根本就不知道具体的实现是什么,也不知道是如何实现的,它只知道通过工厂获得了一个接口对象,然后就能通过这个接口来获取想要的功能。就像我们平时使用的计算器,如果需要实现,当它在知道参加运算的两个数据时,它还需要知道是做何种运算!所以这个时候通常我们采用上述第一种方法实现,不过在接触简单工厂设计模式之后,采用简单工厂设计模式实现比较简单。简单工厂类的实现代码如图5所示:图5 计算器工厂类实现代码我们在知道这个类以后,只

9、需要在需要运算时用这个工厂类创建相应的对象,而不必每一次做运算时都需要重复这些代码,它才是真正实现面向接口编程的好方法。3.3 简单工厂模式的特点简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中了所有实例的创建逻辑,所以“高内聚”方面做的并不好。另外,当系统中的具体

10、产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不很好。结论简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。在实际运用中,由于可行的系统都是比较复杂而且比较庞大的系统,用到的设计模式都比较复杂,而简单工厂设计模式是一个简单而且基础的设计模式,所以它会在较为复杂的设计模式中出现。作为刚刚接触软件开发的初级技术人员,有必要了解和学习最基础的设计模式,这样才能在以后开发大型软件使用设计模式时灵活而且用法丰富多彩。同时掌握基础的简单工厂设计模式有利于增强初学者对软件开发的认识和了解。参考文献1 程杰. 大话设计模式. 北京:清华大学出版社,2007.12 .2 美 Erich Gamma 、 Richard Helm 、 Ralph Johnson、 John Vlissides. 设计模式. 北京:机械工程出版社,2000.09 .3 耿祥义. Java实用教程. 北京:清华大学出版社,2006.08 .4 . Java与设计模式. 北京:电子工业出版社,2002.10 .5_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁