设计模式概述学习教案_第1页
设计模式概述学习教案_第2页
设计模式概述学习教案_第3页
设计模式概述学习教案_第4页
设计模式概述学习教案_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1设计模式概述设计模式概述(i sh)第一页,共70页。2第2页/共70页第二页,共70页。3第3页/共70页第三页,共70页。4第4页/共70页第四页,共70页。5Erich Gamma:苏黎世大学:苏黎世大学计算机科学博士,是计算机科学博士,是Eclipse、 JUnit 等项目主要等项目主要(zhyo)技术负责人之一技术负责人之一John Vlissides:斯坦福:斯坦福大学计算机科学博士大学计算机科学博士(bsh),原原IBM研究员研究员Ralph Johnson:康奈尔:康奈尔大学计算机科学博士大学计算机科学博士(bsh),伊利诺伊大学教授伊利诺伊大学教授Richard He

2、lm:墨尔本大学计算机科学博士,原:墨尔本大学计算机科学博士,原IBM 研究员,现在研究员,现在IBM咨询集团供职咨询集团供职第5页/共70页第五页,共70页。6第6页/共70页第六页,共70页。7第7页/共70页第七页,共70页。8第8页/共70页第八页,共70页。9经典经典(jngdi(jngdin)n)教材教材英文版英文版经典经典(jngdi(jngdin)n)教材教材中文版中文版参考教材参考教材刘伟著刘伟著参考教材参考教材入门级入门级第9页/共70页第九页,共70页。10第10页/共70页第十页,共70页。11第11页/共70页第十一页,共70页。12第12页/共70页第十二页,共70

3、页。13第13页/共70页第十三页,共70页。14第14页/共70页第十四页,共70页。15第15页/共70页第十五页,共70页。16第16页/共70页第十六页,共70页。n特定场景特定场景n设计模式是无穷无尽的,不同设计模式是无穷无尽的,不同场景或者同一场景不同动机都场景或者同一场景不同动机都会产生不同的设计模式会产生不同的设计模式n可复用但勿套用,必须理解设可复用但勿套用,必须理解设计模式的使用场景与目标计模式的使用场景与目标17第17页/共70页第十七页,共70页。18第18页/共70页第十八页,共70页。19第19页/共70页第十九页,共70页。20第20页/共70页第二十页,共70页

4、。21第21页/共70页第二十一页,共70页。22第22页/共70页第二十二页,共70页。23第23页/共70页第二十三页,共70页。24第24页/共70页第二十四页,共70页。25第25页/共70页第二十五页,共70页。26第26页/共70页第二十六页,共70页。27第27页/共70页第二十七页,共70页。28设计模式设计模式模式名模式名和分类和分类结构结构实现实现别名别名意图意图动机动机适用性适用性协作协作参与者参与者效果效果代码示例代码示例已知应用已知应用相关模式相关模式第28页/共70页第二十八页,共70页。29u模式名和分类:模式名简洁地描述了设计模式的本质u别名:模式的其他名称u意

5、图:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题?u动机:说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情景u适用性:什么情况下可以使用该设计模式?该模式可用来改进哪些不良设计?如何识别这些情况?u结构:采用(ciyng)对象建模技术对模式中的类进行图形描述u参与者:指设计模式中的类及对象以及它们各自的职责第29页/共70页第二十九页,共70页。30u协作:模式的参与者如何协作以实现其职责u实现:实现模式时需了解的一些提示、技术要点及应避免的缺陷(quxin),以及是否存在某些特定于实现语言的问题u代码示例:用来说明怎样实现该模式的代码片段u效果:

6、模式如何支持其目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变?u已知应用:实际系统中发现的模式的例子,每个模式至少包括两个不同领域的实例u相关模式:与这个模式紧密相关的模式有哪些?其不同之处是什么?这个模式应与哪些其他模式一起使用?第30页/共70页第三十页,共70页。31第31页/共70页第三十一页,共70页。32第32页/共70页第三十二页,共70页。33第33页/共70页第三十三页,共70页。34目的目的创建型创建型结构型结构型行为型行为型范范围围类类Factory MethodFactory MethodAdapter(Adapter(类类) )Interpre

7、terInterpreterTemplate MethodTemplate Method对对象象Abstract FactoryAbstract FactoryBuilderBuilderPrototypePrototypeSingletonSingletonAdapter(Adapter(对象对象) )BridgeBridgeCompositeCompositeDecoratorDecoratorFacadeFacadeFlyweightFlyweightProxyProxyChain of ResponsibilityChain of ResponsibilityCommandComman

8、dIteratorIteratorMediatorMediatorMementoMementoObserverObserverStateStateStrategyStrategyVisitorVisitor第34页/共70页第三十四页,共70页。35u工厂方法(Factory Method):父类负责定义创建对象的公共接口,而子类则负责生成具体对象,将类的实例化操作延迟到子类中完成u抽象工厂(Abstract Factory):为一个产品族提供统一的创建接口。当需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应(xingyng)的系列创建一个具体的工厂类u单件(Singleton):保证

9、一个类有且仅有一个实例,提供一个全局访问点u生成器(Builder):将复杂对象创建与表示分离,同样的创建过程可创建不同的表示。允许用户通过指定复杂对象类型和内容来创建对象,用户不需要知道对象内部的具体构建细节第35页/共70页第三十五页,共70页。36u组合(Composite):定义一个接口,使之用于单一对象,也可以应用于多个单一对象组成的对象组u装饰(Decorator):给对象动态添加额外的职责,就好像给一个物体加上装饰物,完善其功能u代理(dil)(Proxy):在软件系统中,有些对象有时候由于跨越网络或者其他障碍,而不能够或者不想直接访问另一个对象,直接访问会给系统带来不必要的复杂

10、性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理(dil)对象来代替目标对象打点一切u外观(Facade):为子系统提供了一个更高层次、更简单的接口,从而降低了子系统的复杂度,使子系统更易于使用和管理。外观承担了子系统中类交互的责任u桥梁(Bridge):桥梁模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题第36页/共70页第三十六页,共70页。37u观察者(Observer):定义了对象之间一对多的依赖,当这个对象的状态发生改变的时候,多个对象会接受到通知,有机会做出反馈u命令(Command):将请求及其参数封装成一个对象,作为命令发起者

11、和接收者的中介,可以对这些请求排队或记录请求日志,以及支持可撤销操作u策略(Strategy):定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化u模版(Template ) :定义了一个算法步骤,并允许子类为一个或多个步骤提供(tgng)实现。子类在不改变算法架构的情况下,可重新定义算法中某些步骤u迭代子(Iterator):提供(tgng)一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示第37页/共70页第三十七页,共70页。38第38页/共70页第三十八页,共70页。39第39页/共70页第三十九页

12、,共70页。40第40页/共70页第四十页,共70页。能的基础上,通过调能的基础上,通过调整程序代码改善软件整程序代码改善软件的质量的质量(zhling)和性和性能,使程序的设计模能,使程序的设计模式和架构更趋合理,式和架构更趋合理,提高软件的可维护性提高软件的可维护性和可重用性和可重用性 重构重构(Refactoring)41第41页/共70页第四十一页,共70页。42设计原则名称设计原则名称设计原则简介设计原则简介重要性重要性单一职责原则单一职责原则 (SRP)类的职责要单一,不能将太多的职责放在一类的职责要单一,不能将太多的职责放在一个类中,尽量做到松耦合个类中,尽量做到松耦合开闭原则开

13、闭原则 (OCP)对扩展是开放的,对修改是关闭的,即在不对扩展是开放的,对修改是关闭的,即在不修改已有程序代码的基础上去扩展其功能修改已有程序代码的基础上去扩展其功能里氏代换原则里氏代换原则 (LSP)在软件系统中,一个可以接受基类对象的地在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象方必然可以接受一个子类对象依赖倒转原则依赖倒转原则 (DIP)要针对抽象层编程,而不要针对具体类编程要针对抽象层编程,而不要针对具体类编程接口隔离原则接口隔离原则 (ISP)使用多个专门的接口来取代一个统一的接口使用多个专门的接口来取代一个统一的接口 合成复用原则合成复用原则 (CRP)在系统中

14、应该尽量多使用组合和聚合关联关在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系系,尽量少使用甚至不使用继承关系迪米特法则迪米特法则 (LoD)如果两个类不必彼此直接通信,那么这两个如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互引入一个第三者发生间接交互第42页/共70页第四十二页,共70页。43第43页/共70页第四十三页,共70页。44第44页/共70页第四十四页,共70页。45第45页/共70页第四十五页,共70页。46第46页/共70页第四十六页,共70页。47第47页/共

15、70页第四十七页,共70页。48第48页/共70页第四十八页,共70页。49第49页/共70页第四十九页,共70页。50第50页/共70页第五十页,共70页。51第51页/共70页第五十一页,共70页。52第52页/共70页第五十二页,共70页。53第53页/共70页第五十三页,共70页。节通常对子节通常对子(du zi)类可见类可见n3. 当父类的实现改变时可能要相当父类的实现改变时可能要相应的对子应的对子(du zi)类做出改变类做出改变n4. 不能在运行时改变由父类继承不能在运行时改变由父类继承来的实现来的实现54第54页/共70页第五十四页,共70页。相同的对象引用,可以在运行时相同的对象引用,可以在运行时动态定义组合的方式动态定义组合的方式n1. 结果系统可能会包含更多的对结果系统可能会包含更多的对象象n2. 为了使组合时可以使用为了使组合时可以使用(shyng)不同的对象,必须小心不同的对象,必须小心的的 定义接口定义接口55第55页/共70页第五十五页,共70页。56第56页/共70页第五十六页,共70页。57第57页/共70页第五十七页,共70页。58第58页/共70页第五十八页,共70页。59第59页/共70页第五十九页,共70页。60第60页/共70页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论