云南大学软件学院计模式期末复习.docx
文本预览下载声明
第一章1. 什么是模式?模式 是在物体或事件上,产生的一种规律变化与自我重复的样式与过程。在模式之中,某些固定的元素不断以可预测的方式周期性重现。2.什么是设计模式?广义讲,软件设计模式是可解决一类软件问题并能重复使用的软件设计方案;狭义讲,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。是在类和对象的层次描述的可重复使用的软件设计问题的解决方案;设计模式是在一个 上下文 中,对一个问题 的 解决方案,及其能够达到的效果。3. 设计模式四要素名称、上下文与问题、解决方案、效果模式名称(Pattern Name)问题(Problem):描述应该在何时使用模式。解释了设计问题和问题存在的前因后果,可能还描述模式必须满足的先决条件;解决方案(Solution):描述了设计的组成成分、相互关系及各自的职责和协作方式。模式就像一个模板,可应用于多种场合,所以解决方案并不描述一个具体的设计或实现,而是提供设计问题的抽象描述和解决问题所采用的元素组合(类和对象);效果(consequences ):描述模式的应用效果及使用模式应权衡的问题4. 设计模式分类23种设计模式:创建型:5种;结构型:7种;行为型:11种5.面向对象的四个基本方法:抽象(Abstraction)封装(Encapsulation)多态(Polymorphism)继承(Inheritance)6. 面向对象的设计原则开闭原则 (OCP):对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。单一职责原则(SRP):定义:就一个类而言,应该仅有一个引起它变化的原因;每一个引起类变化的原因就是一个职责,当类具有多职责时,应把多余职责分离出去,分别创建一些类来完成每一个职责;每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化;里氏替换原则(LSP):定义:所有引用基类的地方必须能透明地使用其子类的对象里氏替换原则是继承复用的基石,只有当派生类可以替换掉其基类,而软件功能不受影响时,基类才能真正被复用,派生类也才能够在基类的基础上增加新的行为LSP本质:在同一个继承体系中的对象应该有共同的行为特征依赖倒置原则(DIP):定义:高层模块不应依赖低层模块,二者都应该依赖于抽象高层模块只应该包含重要的业务模型和策略选择,低层模块则是不同业务和策略的实现;高层抽象不依赖高层和低层模块的具体实现,最多只依赖于低层的抽象;低层抽象和实现也只依赖于高层抽象 ;接口隔离原则(ISP):定义:类间的依赖关系应该建立在最小的接口上。多个和客户相关的接口要好于一个通用接口;如果一个类有几个使用者,与其让这个类载入所有使用者需要使用的所有方法,还不如为每个使用者创建一个特定接口,并让该类分别实现这些接口;接口隔离原则包含了四层重要含义:接口尽量要小;接口要高内聚;定制服务;接口设计是有限度的迪米特原则(LoD):定义:一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。迪米特法则也叫做做最少知识原则(Least Knowledge Principle,简称LKP)迪米特法则的初衷在于降低类之间的耦合。第二章(请重点复习本章)策略模式策略模式 定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。标准类图设计原则“开-闭”原则(OCP)单一职责原则(SRP)里氏替换原则(LSP)接口隔离原则(ISP)设计实例及代码参考书22页效果分析优点:算法和使用算法的对象相互分离,客户程序可以在运行时动态选择算法,代码复用性好,便于修改和维护;用组合替代继承,效果更好。若从Context直接生成子类,也可以实现对象的多种算法,但继承使子类和父类紧密耦合,使Context类难以理解、难以维护和难以扩展。策略模式采用组合方式,使Context和Strategy之间的依赖很小,更利于代码复用;消除了冗长的条件语句序列,将不同的算法硬编码进一个类中,选择不同的算法必然要使用冗长的条件语句序列,采用策略模式将算法封装在一个个独立的Strategy类中消除了这些条件语句;算法的动态选择,Strategy模式可以提供相同行为的不同实现,客户可以根据不同的上下文从不同的策略中选择算法;缺点:客户必须了解不同的Strategy,一个
显示全部