ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:153.27KB ,
资源ID:25211741      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25211741.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计模式复习提纲.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

设计模式复习提纲.docx

1、设计模式复习提纲设计模式复习提纲第一章1.状态图的定义状态图用来描述一个特定对象的所有可能状态及其引起状态转移的事件。第二章1.软件的可维护性和可复用性(?)软件可维护性,即维护人员对该软件进行维护的难易程度 ,具体包括理解、改正、改动和改进该软件的难易程度。可复用性:复用又叫重用,是重复使用的意思。2.面向对象设计原则(1)单一职责原则(2)开闭原则(3)里氏代换原则(4)依赖倒转原则(5)接口隔离原则(6)合成复用原则(7)迪米特法则3.单一职责原则定义单一职责原则定义: 一个对象应该只包含单一的职责, 并且该职责被完整地封装在一个类中。另一种定义:就一个类而言,应该仅有一个引起它变化的原

2、因。4.开闭原则定义开闭原则定义:一个软件实体应当对扩展开放,对修改关闭。5.里氏代换原则定义里氏代换原则有两种定义方式。第一种定义方式相对严格,其定义如下:如果对每一个类型为 S 的对象 o1,都有类型为 T 的对象 o2,使得以 T 定义的所有程序 P在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有变化,那么类型 S 是类型 T 的子类型。第二种更容易理解的定义方式如下:所有引用基类(父类)的地方必须能透明地使用其子类的对象。6.依赖倒转原则定义依赖倒转原则定义: 高层模块不应该依赖低层模块, 它们都应该依赖抽象。 抽象不应该依赖于细节,细节应该依赖于抽象。另一种表述为:要针对

3、接口编程,不要针对实现编程。7.接口隔离原则定义接口隔离原则定义: 客户端不应该依赖那些它不需要的接口。 注意: 在该定义中的接口指的是所定义的方法。另一种定义方法: 一旦一个接口太大, 则需要将它分割成一些更细小的接口, 使用该接口的客户端仅需知道与之相关的方法即可。8.合成复用原则定义合成复用原则,又称为组合 /聚合复用原则,其定义如下:尽量使用对象组合,而不是继承来达到复用的目的。9.迪米特法则定义迪米特法则,又称为最少知识原则,它有多种定义方法,其中几种典型定义如下:(1) 不要和“陌生人”说话。(2) 只与你的直接朋友通信。(3) 每一个软件单位对其他的单位都只有最少的知识,而且局限

4、于那些与本单位密切相关的软件单位。第三章1.模式的定义每个模式都描述了一个在我们的环境中不断出现的问题, 然后描述了该问题的解决方案的核心,通过这种方式, 我们可以无数次地重用那些已有的解决方案, 无需再重复相同的工作。可以用一句话简单表示为: 模式是在特定环境中解决问题的一种方案。2.设计模式的定义设计模式是一套被反复使用、 多数人知晓的、经过分类编目的、 代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。3.设计模式的基本要素设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括以下四个方面:

5、模式名称、问题、解决方案、效果。4.设计模式的分类(1)根据其目的(模式是用来做什么的)可分为创建型、结构型和行为型三种:创建型模式主要用于创建对象。结构型模式主要用于处理类或对象的组合。行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。(2)根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种:类模式处理类和子类之间的关系, 这些关系通过继承建立, 在编译时刻就被确定下来,是属于静态的。对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性。5.GoF 设计模式简介GoF 最先将模式的概念引入软件工程领域, 他们归纳发表了 23 种在软件开发

6、中使用频率较高的设计模式, 旨在 用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。6.设计模式的优点设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将避免我们做一些重复性的工作, 而且可以设计出高质量的软件系统。 设计模式的主要优点如下:(1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交流, 使得设计方案更加通俗易懂。 对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案,每一个模式都对应一个标准的解决方案, 设计模式可以降低开发人员

7、理解系统的复杂度。(2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。 设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。(3)设计模式使得设计方案更加灵活,且易于修改。(4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。(5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码, 另一方面还可以提高软件的设计水平和代码质量。补充: 7.设计模式主题: 复用与扩展。8.设计模式基本原则(?)同面向对象

8、设计原则。广义工厂模式包括:简单工厂模式、工厂方法模式、抽象工厂模式。第四章 简单工厂模式不是 GoF23 种模式中的一员补充:创建型模式概述:创建型模式对类的实例化过程进行了抽象, 能够将软件模块中对象的创建和对象的使用分离。创建型模式在创建什么 (What) ,由谁创建 (Who),何时创建 (When)等方面都为软件设计者提供了尽可能大的灵活性。 创建型模式隐藏了类的实例的创建细节, 通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。1.定义:简单工厂模式:又称为静态工厂方法模式, 它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。 简单工厂模式专门定义

9、一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。2.结构图:3.主要优缺点:简单工厂模式最大的优点在于实现对象的创建和对象的使用分离, 将对象的创建交给专门的工厂类负责; 但是其最大的缺点在于工厂类不够灵活, 增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。第五章 工厂方法模式1.定义:工厂方法模式又称为工厂模式, 也叫虚拟构造器模式或者多态工厂模式, 它属于类创建型模式。 在工厂方法模式中, 工厂父类负责定义创建产品对象的公共接口, 而工厂子类则负责生成具体的产品对象, 这样做的目的是将产品类的实例化操作延迟到工厂子类中完成, 即通过工

10、厂子类来确定究竟应该实例化哪一个具体产品类。2.结构图:Product Factory+ factoryMethod () : Product. ConcreteFactoryConcreteProduct+ factoryMethod () : Product.return new ConcreteProduct();3.主要优缺点:工厂方法模式的主要优点是增加新的产品类时无须修改现有系统, 并封装了产品对象的创建细节, 系统具有良好的灵活性和可扩展性; 其缺点在于增加新产品的同时需要增加新的工厂,导致系统类的个数成对增加,在一定程度上增加了系统的复杂性。第六章 抽象工厂模式1.定义:抽象工

11、厂模式: 提供一个创建一系列相关或相互依赖对象的接口, 而无须指定它们具体的类。抽象工厂模式又称为 Kit 模式,属于对象创建型模式。2.结构图:3.主要优缺点:抽象工厂模式的主要优点是隔离了具体类的生成, 使得客户并不需要知道什么被创建, 而且每次可以通过具体工厂类创建一个产品族中的多个对象,增加或者替换产品族比较方便,增加新的具体工厂和产品族很方便; 主要缺点在于增加新的产品等级结构很复杂, 需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。第七章 建造者模式1.定义:建造者模式: 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示。 建造者模式是

12、一步一步创建一个复杂的对象, 它允许用户只通过指定复杂对象的类型和内容就可以构建它们, 用户不需要知道内部的具体构建细节。 建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。2.结构图:BuilderDirector- builder : Builderbuilder+ buildPartA ()+ construct () .+buildPartB ()buildPartC ()+ getResult ().builder.buildPartA();builder.buildPartB();builder.buildPartC();return builder

13、.getResult();ConcreteBuilder+ buildPartA ()+ buildPartB ()+ buildPartC ()+ getResult ()Product.3.主要优缺点:建造者模式的主要优点在于客户端不必知道产品内部组成的细节, 将产品本身与产品的创建过程解耦, 使得相同的创建过程可以创建不同的产品对象, 每一个具体建造者都相对独立,而与其他的具体建造者无关, 因此可以很方便地替换具体建造者或增加新的具体建造者, 符合“开闭原则”, 还可以更加精细地控制产品的创建过程; 其主要缺点在于由于建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,因此其使用

14、范围受到一定的限制,如果产品的内部变化复杂, 可能会导致需要定义很多具体建造者类来实现这种变化, 导致系统变得很庞大。第八章 原型模式1.定义:原型模式: 原型模式是一种对象创建型模式, 用原型实例指定创建对象的种类, 并且通过复制这些原型创建新的对象。 原型模式允许一个对象再创建另外一个可定制的对象, 无须知道任何创建的细节。 原型模式的基本工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝原型自己来实现创建过程。2.结构图: PrototypeClientprototype- prototype : Prototype- copy : Proto

15、type + clone () : Prototype+ operation () .ConcretePrototypeA ConcretePrototypeB.copy=prototype.clone();+ clone () : Prototype + clone () : Prototype . .return copy of self;3.主要优缺点:原型模式最大的优点在于可以快速创建很多相同或相似的对象, 简化对象的创建过程, 还可以保存对象的一些中间状态; 其缺点在于需要为每一个类配备一个克隆方法, 因此对已有类进行改造比较麻烦,需要修改其源代码,并且在实现深克隆时需要编写较为复杂

16、的代码。第九章 单例模式1.定义 :单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式的要点有三个:一是某个类只能有一个实例; 二是它必须自行创建这个实例; 三是它必须自行向整个系统提供这个实例。单例模式是一种对象创建型模式。单例模式又名单件模式或单态模式。2.结构图:Singleton- instance : Singleton instance- Singleton ()+ getInstance () : Singleton.if(instance=null) instance=new Singleton(

17、);return instance;3.主要优缺点:单例模式的主要优点在于提供了对唯一实例的受控访问并可以节约系统资源; 其主要缺点在于因为缺少抽象层而难以扩展,且单例类职责过重。第十章 适配器模式补充:结构型模式概述:结构型模式 (Structural Pattern) 描述如何将类或者对象结合在一起形成更大的结构, 就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。结构型模式可以分为类结构型模式和对象结构型模式: 类结构型模式关心类的组合, 由多个类可以组合成一个更大的系统, 在类结构型模式中一般只存在继承关系和实现关系。 对象结构型模式关心类与对象的组合,通过关联关系使得

18、在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。根据“合成复用原则” ,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是对象结构型模式。1.定义: 适配器模式:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作, 其别名为包装器。 适配器模式既可以作为类结构型模式, 也可以作为对象结构型模式。2.结构图:Client Target Adaptee+ request () + specificRequest (). .Adapter+ request ().specificRequest();3.主要优缺点:适配器模式的主要优点是将目标类

19、和适配者类解耦, 增加了类的透明性和复用性, 同时系统的灵活性和扩展性都非常好, 更换适配器或者增加新的适配器都非常方便, 符合“开闭原则”;类适配器模式的缺点是适配器类在很多编程语言中不能同时适配多个适配者类, 对象适配器模式的缺点是很难置换适配者类的方法。第十一章 桥接模式1.定义: 桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体模式或接口模式。2.结构图:ClientAbstraction Implementor impl+ operation () + operationImpl (). .RefinedAbstraction Con

20、creteImplementorA ConcreteImplementorB+ operation () .+ operationImpl () .+ operationImpl () .3.主要优缺点:桥接模式的主要优点是分离抽象接口及其实现部分, 是比多继承方案更好的解决方法, 桥接模式还提高了系统的可扩充性, 在两个变化维度中任意扩展一个维度, 都不需要修改原有系统, 实现细节对客户透明, 可以对用户隐藏实现细节; 其主要缺点是增加系统的理解与设计难度,且识别出系统中两个独立变化的维度并不是一件容易的事情。第十二章 组合模式1.定义: 组合模式:组合多个对象形成树形结构以表示“整体 -部

21、分”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。组合模式又可以称为“整体 -部分”模式,属于对象的结构模式,它将对象组织到树结构中,可以用来描述整体与部分的关系。2.结构图:ComponentClient+operation ()add (Component c)+ remove (Component c)+ getChild (int i).LeafComposite+ operation () .+operation ()add (Component c)children+ remove (Component c)for(Component chi

22、ld:children) child.operation();+getChild (int i).3.主要优缺点:组合模式的主要优点在于可以方便地对层次结构进行控制, 客户端调用简单, 客户端可以一致的使用组合结构或其中单个对象, 用户就不必关心自己处理的是单个对象还是整个组合结构, 简化了客户端代码; 其缺点在于使设计变得更加抽象, 且增加新构件时可能会产生一些问题,而且很难对容器中的构件类型进行限制。第十三章 装饰模式1.定义: 装饰模式:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。 其别名也可以称为包装器, 与适配器模式的别名相同, 但它们适用

23、于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。2.结构图:Component+ operation () .ConcreteComponent Decorator component+ operation () .+ operation () .component.operation(); ConcreteDecoratorBConcreteDecoratorA- addedState :+ operation () .+operation ()addedBehavior ().super.operation();addedBehavior();3.

24、主要优缺点:装饰模式的主要优点在于可以提供比继承更多的灵活性, 可以通过一种动态的方式来扩展一个对象的功能, 并通过使用不同的具体装饰类以及这些装饰类的排列组合, 可以创造出很多不同行为的组合, 而且具体构件类与具体装饰类可以独立变化, 用户可以根据需要增加新的具体构件类和具体装饰类; 其主要缺点在于使用装饰模式进行系统设计时将产生很多小对象,而且装饰模式比继承更加易于出错, 排错也很困难, 对于多次装饰的对象,调试时寻找错误可能需要逐级排查,较为烦琐。第十四章 外观模式1.定义: 外观模式:外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面, 外观模

25、式定义了一个高层接口, 这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。2.结构图:ClientFacadeFacadeSubsystemSubSystemA SubSystemB SubSystemC3.主要优缺点:外观模式主要优点在于对客户屏蔽子系统组件, 减少了客户处理的对象数目并使得子系统使用起来更加容易, 它实现了子系统与客户之间的松耦合关系, 并降低了大型软件系统中的编译依赖性, 简化了系统在不同平台之间的移植过程; 其缺点在于不能很好地限制客户使用子系统类, 而且在不引入抽象外观类的情况下, 增加新的子系统可能需要修改外观类或客户端的源代码,违

26、背了“开闭原则”。第十五章 享元模式1.定义: 享元模式:运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。 由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。2.结构图:FlyweightFactory Flyweight- flyweights : HashMap flyweights+ getFlyweight (String key) : Flyweight + operation ( extrinsicState). .if(flyweights.containsK

27、ey(key)return (Flyweight )flyweights.get(key);ConcreteFlyweight UnsharedConcreteFlyweightelseFlyweight fw=new ConcreteFlyweight();flyweights.put(key,fw);return fw;- intrinsicState :+ operation ( extrinsicState).- allState :+ operation ( extrinsicState).3.主要优缺点:享元模式主要优点在于它可以极大减少内存中对象的数量, 使得相同对象或相似对象在

28、内存中只保存一份; 其缺点是使得系统更加复杂, 并且需要将享元对象的状态外部化, 而读取外部状态使得运行时间变长。第十六章 代理模式1.定义:代理模式: 给某一个对象提供一个代理, 并由代理对象控制对原对象的引用。 代理模式的英文叫做 Proxy 或 Surrogate,它是一种对象结构型模式。2.结构图:Subject+ request () .ClientProxy- realSubject : RealSubjectRealSubject+preRequest ()request ()realSubject+ request ()+ postRequest () .preRequest(

29、);realSubject.request();postRequest();3.主要优缺点:代理模式的优点在于能够协调调用者和被调用者, 在一定程度上降低了系统的耦合度; 其缺点在于由于在客户端和真实主题之间增加了代理对象, 因此有些类型的代理模式可能会造成请求的处理速度变慢, 并且实现代理模式需要额外的工作, 有些代理模式的实现非常复杂。第十七章 职责链模式补充:行为型模式概述:行为型模式是对在不同的对象之间划分责任和算法的抽象化。 行为型模式不仅仅关注类和对象的结构, 而且重点关注它们之间的相互作用。 通过行为型模式, 可以更加清晰地划分类与对象的职责, 并研究系统在运行时实例对象之间的交互。 在系统运行时, 对象并不是孤立的,它们可以通过相互通信与协作完成某些复杂功能, 一个对象在运行时也将影响到其他对象的运行。行为型模式分为类行为型模式和对象行为型模式两种:(1)类行为型模式:类的行为型模式使用继承关系在几个类之间分配

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1