中间件技术应用课件第一部分-设计模式简介.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《中间件技术应用课件第一部分-设计模式简介.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中间件 技术 应用 课件 第一 部分 设计 模式 简介
- 资源描述:
-
1、middleware technology and application 第一部分第一部分 设计模式简介设计模式简介一、什么是设计模式一、什么是设计模式 1设计模式“设计模式(pattern)是从许多优秀的软件系统中总结出的成功的可复用的设计方案”。2GOF之说“尽管Alexander所指的是城市和建筑设计模式,但他的思想也同样适用于面向对象设计模式,只是在面向对象的解决方案里,我们用对象和接口代替了墙壁和门窗。两类模式的核心都在于提供了相关问题的解决方案”。middleware technology and application模式的四个基本要素1名称名称 一个模式的名称高度概括该模式的
2、本质,有利于该行业统一术语、便于交流使用。2问题问题 描述应该在何时使用模式,解释设计问题和问题存在的前因后果,描述在怎样的环境下使用该模式。3方案方案 描述设计的组成部分,它们之间的相互关系及各自的职责和协作方式。4效果效果 描述模式的应用效果及使用模式应当权衡的问题。主要效果包括使用模式对系统的灵活性、扩充性和复用性的影响。middleware technology and application模式的四个基本要素例如,GOF之书如下记录中介者模式:名称名称 中介者 问题问题 用一个中介者来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之
3、间的交互。方案方案 中介者(Mediator)接口、具体中介者(ConcreteMediator)、同事(Colleague)、具体同事(ConcreteColleague)。效果效果 减少了子类的生成、将各个同事解耦、简化了对象协议、控制集中化。middleware technology and application二、设计模式的起源二、设计模式的起源 软件领域的设计模式起源主要是受到1977年建筑大师Alexander出版的A Pattern Language:Towns,Building,Construction一书。Alexander在其著作中将其建筑行业中的许多问题的最佳解决方案记
4、录为200多种模式,其思想不仅在建筑行业影响深远,而且很快影响到了软件设计领域。middleware technology and application 1987年,Kent Beck和Ward Cunningham将Alexander在建筑学上的模式观点应用于软件设计,开发了一系列模式,并用Smalltalk语言实现了雅致的用户界面。Kent Beck和Ward Cunningham在1987年举行的一次面向对象的会议上发表了论文:在面向对象编程中使用模式,该论文发表后,有关软件的设计模式论文以及著作相继出版。1 设计模式的起源设计模式的起源middleware technology an
5、d application2 GOF之著作之著作1目前,被公认在设计模式领域最具影响力的著作是Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides在1994年合作出版的著作:Design Patterns:Elements of Reusable Object-Oriented Software(中译本设计模式:可复用的面向对象软件的基本原理。2该书的四位作者在其著作中记录了他们在四年多的工作中所发现的23个模式。3设计模式一书被广大喜爱者昵称为GOF(Gang of Four)之书,被认为是学习设计模式的必读著作。被公认为是设计模式领域的
6、奠基之作。middleware technology and application3 学习设计模式的重要性学习设计模式的重要性1一个好的设计系统往往是易维护、易扩展、易复用的。2有经验的设计人员或团队知道如何使用面向对象语言编写出易维护、易扩展和易复用的程序代码。3设计模式一书正是从这些优秀的设计系统中总结出的设计精髓。4学习设计模式对提高设计能力无疑是非常有帮助的,尽管GOF之书并没有收集全部的模式,但所阐述的23种模式无疑是使用频率最高的模式。5设计模式的目的不是针对软件设计和开发中的每个问题都给出解决方案,而是针对某种特定环境中通常都会遇到的某种软件开发问题给出的可重用的一些解决方案。
7、middleware technology and application6学习设计模式不仅可以使我们使用好这些成功的模式,更重要的是可以使我们更加深刻地理解面向对象的设计思想,非常有利于我们更好地使用面向对象语言解决设计中的问题。7学习设计模式对于进一步学习、理解和掌握框架是非常有帮助的,比如Java EE中就大量使用了设计模式一书中的模式,对于熟悉设计模式的开发人员,很容易理解这些框架的结构,继而很好地使用框架来设计他们的系统。学习设计模式的重要性学习设计模式的重要性middleware technology and application8设计模式一书所总结的成功模式不仅适合于面向对象语
8、言,其思想及解决问题的方式也适合于任何和设计相关的行业,因此学习掌握设计模式无疑是非常有益的。学习设计模式的重要性学习设计模式的重要性middleware technology and application合理使用模式合理使用模式 不是软件的任何部分都需要套用模式来设计的,必须针对具体问题合理的使用模式。1.正确使用正确使用 当你设计某个系统,并确认所遇到的问题刚好适合使用某个模式,就可以考虑使用该模式到你的系统设计中,毕竟该模式已经被公认是解决该问题的成功方案,能使设计的系统易维护、可扩展性强、复用性好,而且这些经典的模式也容易让其他开发人员了解你的系统和设计思想。2.避免教条避免教条模式
9、不是数学公式、也不是物理定律、更不是软件设计中的“法律”条文,你完全可以修改模式中的部分结构以符合你的设计要求。middleware technology and application3.模式挖掘模式挖掘 模式不是用理论推导出来的,而是从真实世界的软件系统中被发现、按着一定规范总结出来的可以被复用的方案。许多文献或书籍里阐述的众多模式实际上都是GOF书中经典模式的变形,这些变形模式都经过所谓的“三次规则”,即该模式已经在真实世界的三个方案中被成功的采用。可以从某个系统中洞察出某种新模式,只要经过“三次规则”就会被行业认可。4.避免乱用避免乱用 不是所有的设计中都需要使用模式,因为模式不是发明
10、出来的,而是总结出来的,事实上,真实世界中的许多设计实例都没有使用过GOF之书中的经典模式。在进行设计时,尽可能用最简单的方式满足系统的要求,而不是费尽心机地琢磨如何在这个问题中使用模式.合理使用模式合理使用模式middleware technology and application5.了解反模式了解反模式 所谓反模式就是从某些软件系统中总结出的不好的设计方案,反模式就是告诉你如何采用一个不好的方案解决一个问题。既然是一个不好的方案,为何还有可能被重复使用呢?这是因为,这些不好的方案表面上往往有很强的吸引力,人们很难一眼就发现它的弊端,因此,发现一个反模式也是非常有意义的工作。在有了一定的设
11、计模式的基础之后,你可以用搜索引擎查找有关反模式的信息,这对于学习好设计模式也是非常有帮助的。合理使用模式合理使用模式middleware technology and application 一个设计中,可能并不需要使用模式就可以很好地满足系统的要求,如果牵强地使用某个模式可能会在系统中增加许多额外的类和对象,影响系统的性能,因为大部分设计模式往往会在系统中加入更多的层,这不但增加复杂性,而且系统的效率也会下降。合理使用模式合理使用模式middleware technology and application什么是框架什么是框架 框架不是模式,框架是针对某个领域,提供用于开发应用系统的类的集
12、合,程序设计者可以使用框架提供的类设计一个应用程序,而且在设计应用程序时可以针对特定的问题使用某个模式。1层次不同层次不同 模式比框架更抽象,模式是在某种特定环境中,针对一个软件设计出现的问题而给出的可复用的解决方案,不能向使用者提供可以直接使用的类,设计模式只有在被设计人员使用时才能表示为代码,middleware technology and application 例如,GOF描述的中介者模式:“用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互”,该模式在解决方案中并没有提供任何类的代码,只是说明设计者可以针对特
13、定的问题使用该模式给出的方案。框架和模式不同,它不是一种可复用的设计方案,它是由可用于设计解决某个问题的一些类组成的集合,程序设计人员通过使用框架提供的类或扩展框架提供的类进行应用程序的设计,例如。在Java中,开发人员使用Swing框架提供的类设计用户界面;使用Set(集合)框架提供的类处理数据结构相关的算法等。什么是框架什么是框架middleware technology and application2范围不同 模式本质上是逻辑概念,以概念的形式而存在,模式所描述的方案独立于编程语言。Java程序员、C+程序员或SmallTalk程序员都可以在自己的系统设计中使用某个模式。框架的应用的范
14、围是很具体的,它们不是以概念的形式而存在,而是以具体的软件组织而存在,只能被特定的软件设计者使用,比如Java提供的 Swing框架只能为Java应用程序所使用。什么是框架什么是框架middleware technology and application3相互关系相互关系 一个框架往往会包括多个设计模式,它们是面向对象系统获得最大复用的方式,较大的面向对象应用会由多层彼此合作的框架组成,例如,Java Web设计中的Struts,Spring和Hibernate等框架。框架变得越来越普遍和重要,导致许多开源框架的出现,而且一个著名的框架往往是许多设计模式的具体体现,我们甚至可以在一些成功的框
15、架中挖掘出新的模式。什么是框架什么是框架middleware technology and application使用使用Java描述模式的必要性描述模式的必要性 Java不仅可以用来开发大型的桌面应用程序,而且特别适合于Internet的应用开发。目前,Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。GOF之书无疑是经典之作,但是该书中的示例代码相当简练,而且是采用C+描述的,另外C+中提到的接口就是指类的方法,但是在Java中,类和接口是两个不同的概念。所以采用Java语言讲解GOF之书中的23个模式,其原因不仅是因为Java语言的广泛使用,
16、而且希望设计模式的学习更加适合具有一定Java语言基础的学生和程序员。middleware technology and application第二部分,UML类图简介 Student+name:String#age:int-money:double+setName(String):void#printMess():void+getAge():intsetAge(int):void-getMoney();1.类类(Class)middleware technology and applicationCreator+MAX:int+factoryMethod():Product2.接口(接口(I
17、nterface)middleware technology and application3.泛化关系(继承关系,泛化关系(继承关系,Generalization)middleware technology and application4.关联关系(关联关系(Association)middleware technology and application5.依赖关系(依赖关系(Dependency)middleware technology and application6.实现关系(实现关系(Realization)middleware technology and applicati
18、on第三部分第三部分 面向对象的几个基本原则面向对象的几个基本原则3.1 面向抽象原则面向抽象原则1抽象类和接口抽象类和接口(1)抽象(abstract)类 抽象(abstract)类具有如下特点:抽象类中可以有abstract方法,也可以有非abstract方法。抽象类不能用new运算符创建对象。如果一个非抽象类是某个抽象类的子类,那么它必须重写父类的abstract方法,即在子类中将abstract方法重新声明,但必须去掉abstract修饰符,同时要保证声明的方法名字、返回类型、参数个数和类型与父类的abstract方法完全相同。尽管抽象类不能用new运算符创建对象,但它的非abstra
19、ct子类必须要重写它中的全部abstract方法,这样一来,就可以让抽象类声明的对象成为其子类对象的上转型对象,并调用抽象类声明的对象成为其子类对象的上转型对象,并调用子类重写的方法。子类重写的方法。middleware technology and application(1)抽象类)抽象类 public abstract class A public abstract int add(int x,int y);public B extends A public int add(int x,int y)return x+y;public Application public static v
20、oid main(String args)A a;a=new B();/a是B类对象的上转型对象 int m=a.add(3,2);middleware technology and application(2)接口 接口(interface)具有如下特点:接口中只可以有public权限的abstract方法,不能有非abstract方法。接口由类去实现,即一个类如果实现一个接口,那么它必须重写接口中的abstract方法,即将abstract方法重新声明,但必须去掉abstract修饰符,同时要保证声明的方法名字、返回类型、参数个数和接口中的方法完全相同。接口回调。接口回调是指可以把实现接口
21、的类的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象方法的接口回调。middleware technology and application(2)接口)接口public interface Com public abstract int sub(int x,int y);Class ComImp implements Com public int sub(int x,int y)return x-y;public Application public static
22、 void main(String args)Com com com=new ComImp();/com变量存放ComImp类对象的引用 int m=com.sub(5,2);/com回调ComImp类实现的接口方法 system.out.println(m);middleware technology and application 3.1 面向抽象原则面向抽象原则 所谓面向抽象编程,是指当设计一个类时,不让该类面向具体的类,而是面向抽象类或接口,即所设计类中的重要数据是抽象类或接口声明的变量,而不是具体类声明的变量。middleware technology and application
23、3.2 开开-闭原则闭原则 所谓“开-闭原则”(Open-Closed Principle)就是让你的设计应当对扩展开放扩展开放,对修改关闭对修改关闭。实际上这句话的本质是指当一个设计中增加新的模块时,不需要修改现有的模块。我们在给出一个设计时,应当首先考虑到用户需求的变化,将应对用户变化的部分设计为对扩展开放,而设计的核心部分是经过精心考虑之后确定下来的基本结构,这部分应当是对修改关闭的,即不能因为用户的需求变化而再发生变化,因为这部分不是用来应对需求变化的。middleware technology and application如果您的设计遵守了“开-闭原则”,那么这个设计一定是易维护的
24、,因为在设计中增加新的模块时,不必去修改设计中的核心模块。比如,我们在2.1节给出的设计中有4个类,类图如下:middleware technology and application 通常我们无法让设计的每个部分都遵守“开-闭原则”,甚至不应当这样去做,我们应当把主要精力集中在应对设计中最有可能因需求变化而需要改变的地方,然后想办法应用“开-闭原则”。当设计某些系统时,我们经常需要面向抽象来考虑系统的总体设计,不要考虑具体类,这样就容易设计出满足“开-闭原则”的系统,在程序设计好后,首先对abstract类的修改关闭,否则,一旦修改abstract类,比如,为它再增加一个abstract方法
25、,那么abstract类所有的子类都需要做出修改;应当对增加abstract类的子类开放,即在程序中再增加子类时,不需要修改其它面向抽象类而设计的重要类。middleware technology and application3.3 多用组合少用继承原则 之所以提倡多用组合,少用继承,是因为在许多设计中,人们希望系统的类之间尽量是低耦合的关系,而不希望是强偶合关系。即在许多情况下需要避开继承的缺点,而需要组合的优点。怎样合理地使用组合,而不是使用继承来获得方法的复用需要经过一定时间的认真思考、学习和编程实践才能悟出其中的道理,这也是促使我们学习设计模式的原因之一。关于多用组合,少用继承,在后
展开阅读全文