首页 第一讲命令模式

第一讲命令模式

举报
开通vip

第一讲命令模式第一讲命令模式 第一讲 一、教学目的: 了解设计模式的起源、设计模式资源和高内聚 低耦合原则,理解什么是设计模式、 学习设计模式的重要性、什么是框架、开闭原则,掌握合理使用模式、泛化关系、关联关系 和实现关系等。 二、教学重点:泛化关系、依赖关系、关联关系和实现关系。 三、教学难点:高内聚 低耦合原则和开闭原则。 四、教学方法:讲授 五、教学用具:电脑、黑板和投影仪等。 六、教学内容: 第1章设计模式简介 1.1什么是设计模式 1.2设计模式的起源 1.3“23个设计模式”的来源 1.4学习设...

第一讲命令模式
第一讲命令模式 第一讲 一、教学目的: 了解设计模式的起源、设计模式资源和高内聚 低耦合原则,理解什么是设计模式、 学习设计模式的重要性、什么是框架、开闭原则,掌握合理使用模式、泛化关系、关联关系 和实现关系等。 二、教学重点:泛化关系、依赖关系、关联关系和实现关系。 三、教学难点:高内聚 低耦合原则和开闭原则。 四、教学 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 :讲授 五、教学用具:电脑、黑板和投影仪等。 六、教学 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 : 第1章设计模式简介 1.1什么是设计模式 1.2设计模式的起源 1.3“23个设计模式”的来源 1.4学习设计模式的重要性 1.5合理使用模式 1.6什么是框架 1.7使用Java描述模式的必要性 1.8设计模式资源 第2章面向对象的几个基本原则 2.1面向抽象原则 2.2开 闭原则 2.3多用组合少用继承原则 2.4高内聚 低耦合原则 第3章UML类图简介 3.1类 3.2接口 3.3泛化关系 3.4关联关系 3.5依赖关系 3.6实现关系 3.7注释 七、小结: 本次课学习了计模式的起源、设计模式资源和高内聚 低耦合原则;什么是设计模 式、学习设计模式的重要性、什么是框架、开闭原则;合理使用模式、泛化关系、关联关系 和实现关系等。 八、作业:结合今天讲解的内容查资料和预习4章。 九、讲义: Java设计模式 耿祥义 张跃平 著 本书组织结构 讲解模式的各章包含有四部分重要的内容: 概述 用易于理解的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 讲解使用模式的动机。 模式的结构 在这部分我们用一个易于理解的示例讲解模式的结构。 模式的优点和使用场景 从面向对象角度看优点。 实际问题 使用设计模式给出一个有一定难度和实用价值的示例。 特色 为了说明一个模式的核心实质,本书精心研究了针对每个模式的示例,以便让读者结合 这样的示例能更好的理解和使用模式。本书的全部示例由作者编写完成,示例代码及相关内 容仅供学习Java设计模式使用。 教材目录 设计模式简介 第2章 面向对象的几个基本原则 第3章 UML类图简介 第4章 命令模式 第5章 观察者模式 第6章 装饰模式 第7章 策略模式 第8章 适配器模式 第9章 责任链模式 第10章 外观模式 第11章 迭代器模式 第12章 中介者模式 第13章 工厂方法模式 第14章 抽象工厂模式 第15章 生成器模式 第16章 原型模式 第17章 单件模式 第18章 组合模式 第19章 桥接模式 第20章 状态模式 第21章 模板方法模式 第22章 代理模式 第23章 享元模式 第24章 访问者模式 第25章 备忘录模式 第26章 解释器模式 第27章 模式分类 第一部分 设计模式简介 1.1什么是设计模式 1(设计模式 “设计模式(pattern)是从许多优秀的软件系统中总结出的成功的可复用的设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ”。 2(GOF之说 “尽管Alexander所指的是城市和建筑设计模式,但他的思想也同样适用于面向对象设计模式,只是在面向对象的解决方案里,我们用对象和接口代替了墙壁和门窗。两类模式的核心都在于提供了相关问题的解决方案”。 记录一个设计模式需有四个基本要素: 1(名称 一个模式的名称高度概括该模式的本质,有利于该行业统一术语、便于交流使用。 2(问题 描述应该在何时使用模式,解释设计问题和问题存在的前因后果,描述在怎样的环境下使用该模式。 3(方案 描述设计的组成部分,它们之间的相互关系及各自的职责和协作方式。 4(效果 描述模式的应用效果及使用模式应当权衡的问题。主要效果包括使用模式对系统的灵活性、扩充性和复用性的影响。 例如,GOF之书如下记录中介者模式: 名称 中介者 问题 用一个中介者来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 方案 中介者(Mediator)接口、具体中介者(ConcreteMediator)、同事(Colleague)、具体同事(ConcreteColleague)。 效果 减少了子类的生成、将各个同事解耦、简化了对象协议、控制集中化。 1.2 设计模式的起源 1(软件领域的设计模式起源主要是受到1977年建筑大师Alexander出版的《A Pattern Language:Towns, Building, Construction》一书。 2(Alexander在其著作中将其建筑行业中的许多问题的最佳解决方案记录为200多种模式,其思想不仅在建筑行业影响深远,而且很快影响到了软件设计领域。 3(1987年,Kent Beck和Ward Cunningham将Alexander在建筑学上的模式观点应用于软件设计,开发了一系列模式,并用Smalltalk语言实现了雅致的用户界面。Kent Beck和Ward Cunningham在1987年举行的一次面向对象的会议上发表了论文:《在面向对象编程中使用模式》,该论文发表后,有关软件的设计模式论文以及著作相继出版。 1.3 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)之书(四人帮之书),被认为是学习设计模式的必读著作。 4(GOF之书已经被公认为是设计模式领域的奠基之作。 1.4学习设计模式的重要性 1(一个好的设计系统往往是易维护、易扩展、易复用的。 2(有经验的设计人员或团队知道如何使用面向对象语言编写出易维护、易扩展和易复用的程序代码。 3(《设计模式》一书正是从这些优秀的设计系统中总结出的设计精髓。 (学习设计模式对提高设计能力无疑是非常有帮助的,尽管GOF之书并没有收集全部的模4 式,但所阐述的23种模式无疑是使用频率最高的模式。 5(设计模式的目的不是针对软件设计和开发中的每个问题都给出解决方案,而是针对某种特定环境中通常都会遇到的某种软件开发问题给出的可重用的一些解决方案。 6(学习设计模式不仅可以使我们使用好这些成功的模式,更重要的是可以使我们更加深刻地理解面向对象的设计思想,非常有利于我们更好地使用面向对象语言解决设计中的问题。 7(学习设计模式对于进一步学习、理解和掌握框架是非常有帮助的,比如Java EE中就大量使用了《设计模式》一书中的模式,对于熟悉设计模式的开发人员,很容易理解这些框架的结构,继而很好地使用框架来设计他们的系统。 8(《设计模式》一书所总结的成功模式不仅适合于面向对象语言,其思想及解决问题的方式也适合于任何和设计相关的行业,因此学习掌握设计模式无疑是非常有益的。 1.5 合理使用模式 不是软件的任何部分都需要套用模式来设计的,必须针对具体问题合理的使用模式。 1. 正确使用 当你设计某个系统,并确认所遇到的问题刚好适合使用某个模式,就可以考虑使用该模式到你的系统设计中,毕竟该模式已经被公认是解决该问题的成功方案,能使设计的系统易维护、可扩展性强、复用性好,而且这些经典的模式也容易让其他开发人员了解你的系统和设计思想。 2. 避免教条 模式不是数学公式、也不是物理定律、更不是软件设计中的“法律”条文,一个模式只是成功解决某个特定问题的设计方案,你完全可以修改模式中的部分结构以符合你的设计要求。 3.模式挖掘 模式不是用理论推导出来的,而是从真实世界的软件系统中被发现、按着一定 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 总结出来的可以被复用的方案。许多文献或书籍里阐述的众多模式实际上都是GOF书中经典模式的变形,这些变形模式都经过所谓的“三次规则”,即该模式已经在真实世界的三个方案中被成功的采用。可以从某个系统中洞察出某种新模式,只要经过“三次规则”就会被行业认可。 4.避免乱用 不是所有的设计中都需要使用模式,因为模式不是发明出来的,而是总结出来的,事实上,真实世界中的许多设计实例都没有使用过GOF之书中的经典模式。在进行设计时,尽可能用最简单的方式满足系统的要求,而不是费尽心机地琢磨如何在这个问题中使用模式,一个设计中,可能并不需要使用模式就可以很好地满足系统的要求,如果牵强地使用某个模式可能会在系统中增加许多额外的类和对象,影响系统的性能,因为大部分设计模式往往会在系统中加入更多的层,这不但增加复杂性,而且系统的效率也会下降。 5.了解反模式 所谓反模式就是从某些软件系统中总结出的不好的设计方案,反模式就是告诉你如何采用一个不好的方案解决一个问题。既然是一个不好的方案,为何还有可能被重复使用呢,这是因为,这些不好的方案表面上往往有很强的吸引力,人们很难一眼就发现它的弊端,因 此,发现一个反模式也是非常有意义的工作。在有了一定的设计模式的基础之后,你可以用搜索引擎查找有关反模式的信息,这对于学习好设计模式也是非常有帮助的。 1.6 什么是框架 框架不是模式,框架是针对某个领域,提供用于开发应用系统的类的集合,程序设计者可以使用框架提供的类设计一个应用程序,而且在设计应用程序时可以针对特定的问题使用某个模式。 1(层次不同 模式比框架更抽象,模式是在某种特定环境中,针对一个软件设计出现的问题而给出的可复用的解决方案,不能向使用者提供可以直接使用的类,设计模式只有在被设计人员使用时才能表示为代码,例如,GOF描述的中介者模式:“用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互”,该模式在解决方案中并没有提供任何类的代码,只是说明设计者可以针对特定的问题使用该模式给出的方案。框架和模式不同,它不是一种可复用的设计方案,它是由可用于设计解决某个问题的一些类组成的集合,程序设计人员通过使用框架提供的类或扩展框架提供的类进行应用程序的设计,例如。在Java中,开发人员使用Swing框架提供的类设计用户界面;使用Set(集合)框架提供的类处理数据结构相关的算法等。 2(范围不同 模式本质上是逻辑概念,以概念的形式而存在,模式所描述的方案独立于编程语言。Java程序员、C++程序员或SmallTalk程序员都可以在自己的系统设计中使用某个模式。框架的应用的范围是很具体的 ,它们不是以概念的形式而存在,而是以具体的软件组织而存在,只能被特定的软件设计者使用,比如Java提供的 Swing框架只能为Java应用程序所使用。 3(相互关系 一个框架往往会包括多个设计模式,它们是面向对象系统获得最大复用的方式,较大的面向对象应用会由多层彼此合作的框架组成,例如, Java Web设计中的Struts , Spring和Hibernate等框架。框架变得越来越普遍和重要,导致许多开源框架的出现,而且一个著名的框架往往是许多设计模式的具体体现,我们甚至可以在一些成功的框架中挖掘出新的模式。 1.7 使用Java描述模式的必要性 Java不仅可以用来开发大型的桌面应用程序,而且特别适合于Internet的应用开发。目前,Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。Java语言面向对象编程,并涉及到网络、多线程等重要的基础知识,而且很多新的技术领域都涉及到了Java语言,国内外许多大学已将Java语言列入了本科教学计划。GOF之书无疑是经典之作,但是该书中的示例代码相当简练,而且是采用C++描述的,另外C++中提到的接口就是指类的方法,但是在Java中,类和接口是两个不同的概念。本书之所以采用Java语言讲解GOF之书中的23个模式,其原因不仅是因为Java语言的广泛使用,而且希望设计模式的学习更加适合具有一定Java语言基础的学生和程序员。 第二部分,UML类图简介 类(Class) +name:String #age:int -money:double +setName(String):void #printMess():void +getAge():int setAge(int):void -getMoney(); 2.接口(Interface) <> Creator +MAX:int +factoryMethod():Product 3.泛化关系(继承关系,Generalization) 4.关联关系(Association) 5.依赖关系(Dependency) 6.实现关系(Realization) 第三部分 面向对象的几个基本原则 3.1 面向抽象原则 1(抽象类和接口 (1)抽象(abstract)类 我们已经知道,抽象(abstract)类具有如下特点: 抽象类中可以有abstract方法,也可以有非abstract方法。 抽象类不能用new运算符创建对象。 如果一个非抽象类是某个抽象类的子类,那么它必须重写父类的abstract方法,即在子类中将abstract方法重新声明,但必须去掉abstract修饰符,同时要保证声明的方法名字、返回类型、参数个数和类型与父类的abstract方法完全相同。 做上转型对象。尽管抽象类不能用new运算符创建对象,但它的非abstract子类必须要重写它中的全部abstract方法,这样一来,就可以让抽象类声明的对象成为其子类对象的上转型对象,并调用子类重写的方法。 (2)接口 我们已经知道,接口(interface)具有如下特点: 接口中只可以有public权限的abstract方法,不能有非abstract方法。 接口由类去实现,即一个类如果实现一个接口,那么它必须重写接口中的abstract方法,即将abstract方法重新声明,但必须去掉abstract修饰符,同时要保证声明的方法名字、返回类型、参数个数和接口中的方法完全相同。 接口回调。接口回调是指可以把实现接口的类的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象方法的接口回调。 2(面向抽象 所谓面向抽象编程,是指当设计一个类时,不让该类面向具体的类,而是面向抽象类或接口,即所设计类中的重要数据是抽象类或接口声明的变量,而不是具体类声明的变量。 2.2 开-闭原则 所谓 “开-闭原则”(Open-Closed Principle)就是让你的设计应当对扩展开放,对修改关闭。怎么理解对扩展开放,对修改关闭呢,实际上这句话的本质是指当一个设计中增加新的模块时,不需要修改现有的模块。我们在给出一个设计时,应当首先考虑到用户需求的变化,将应对用户变化的部分设计为对扩展开放,而设计的核心部分是经过精心考虑之后确定下来的基本结构,这部分应当是对修改关闭的,即不能因为用户的需求变化而再发生变化,因为这部分不是用来应对需求变化的。 如果您的设计遵守了“开-闭原则”,那么这个设计一定是易维护的,因为在设计中增加新的模块时,不必去修改设计中的核心模块。比如,我们在2.1节给出的设计中有4个类,类图 如下 : 该设计中的Geometry和Pillar类就是系统中对修改关闭的部分,而Geometry的子类是对扩展开放的部分。当我们向系统再增加任何Geometry的子类时(对扩展开放),不必修改Pillar类,就可以使用Pillar创建出具有Geometry的新子类指定的底的柱体。 通常我们无法让设计的每个部分都遵守“开-闭原则”,甚至不应当这样去做,我们应当把主要精力集中在应对设计中最有可能因需求变化而需要改变的地方,然后想办法应用“开-闭原则”。 当设计某些系统时,我们经常需要面向抽象来考虑系统的总体设计,不要考虑具体类,这样就容易设计出满足“开-闭原则”的系统,在程序设计好后,首先对abstract类的修改关闭,否则,一旦修改abstract类,比如,为它再增加一个abstract方法,那么abstract类所有的子类都需要做出修改;应当对增加abstract类的子类开放,即在程序中再增加子类时,不需要修改其它面向抽象类而设计的重要类。 2.3 多用组合少用继承原则 之所以提倡多用组合,少用继承,是因为在许多设计中,人们希望系统的类之间尽量是低耦合的关系,而不希望是强偶合关系。即在许多情况下需要避开继承的缺点,而需要组合的优点。怎样合理地使用组合,而不是使用继承来获得方法的复用需要经过一定时间的认真思考、学习和编程实践才能悟出其中的道理,这也是促使我们学习设计模式的原因之一。关于多用组合,少用继承,在后面的设计模式中,比如第6章的装饰模式,第7章的策略模式以及第12章的中介者模式中都有体现。 2.4 高内聚-低耦合原则 如果类中的方法是一组相关的行为,则称该类是高内聚的,反之称为低内聚的。高内聚便于类的维护,而低内聚不利于类的维护,学习后面第11章迭代器模式时,会更深刻体会到这一原则。 所谓低耦合就是尽量不要让一个类含有太多的其它类的实例的引用,以避免修改系统的其中一部分会影响到其它部分,比如在后面学习中介者模式时,就会体会到这一原则。
本文档为【第一讲命令模式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_079973
暂无简介~
格式:doc
大小:83KB
软件:Word
页数:0
分类:企业经营
上传时间:2018-04-05
浏览量:5