《设计模式》Java版期末总结 下载本文

第一章 设计模式概念

1. 设计模式

名词解释:一套被反复使用,多数人知晓,经过分类编目的优秀代码设计经验的总结。

作用:重用代码,使代码更易理解,保证代码的可靠性。

2. 可复用面向对象软件系统一般划分为两大类:应用程序工具箱、框架。

3. Java设计模式贯彻的原理:面向接口编程,而不是面向实现。

目标原则:降低耦合,增强灵活性。

4. 设计模式的要素

模式名称、问题、环境或初始环境、解决方案、效果、举例、末态环境、推理、其他有关模式、已知的应用。

5. 常用的设计模式有23种。

按特点分为三类:创建型,结构型,行为型。

6. 创建型模式

定义:用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其 关联对象的创建、组合和表达方式。

功能:将系统所使用的具体类的信息封装起来;隐藏类的实例是如何被创建和组织的。

作用:封装创建逻辑,不仅仅是new一个对象那么简单;封装创建逻辑变化,客户代码尽量不修改,或尽量少修改。

常见的创建型设计模式:

单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。

7. 结构型模式

定义:类和对象的结构,它采用继承机制来组合接口或实现,或者通过组 合一些对象实现新的功能。

常见的结构型设计模式有:

代理模式、装饰模式、适配器模式、组合模式、桥梁模式、外观模式、享元模式。

8. 行为型模式

定义:关注的是对象的行为,用来解决对象之间的联系问题

常见的行为型设计模式有:

模板方法模式、命令模式、责任链模式、策略模式、迭代模式、中介者模式、 观察者模式、备忘录模式、访问者模式、状态模式、解释器模式

课后题:

1、 设计模式起源于:建筑工程设计

2、 下面不属于设计模式的要素的是:因素

3、 目前有23中设计模式,分为3大类

4、 设计模式分为创建型、结构型和行为型三大类型

第二章 设计原则

1.单一职责原则(SRP)

名词解释:一个类,只有一个引起它变化的原因,应该只有一个职责。

① 降低类的复杂性

② 提高类的可读性

③ 提高代码的可维护性和复用性

④ 降低因变更引起的风险。

作用:单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口 或类设计是否优良,但“职责”和“变化原因”都是不可度量的。

2.里氏替换原则(LSP)

名词解释:所有引用基类的地方必须能透明地使用其子类对象,反之则不行。

优点:

① 代码共享,减少创建类的工作量。

② 提高代码可重用性

③ 提高代码的可拓展性

④ 提高产品或项目的开发性。

体现里氏替换原则的有如下几个模式:

策略模式、组合模式、代理模式

3.依赖倒置原则(DIP)

名词解释:高层模块不应该依赖低层模块,两者都应依赖其抽象,抽象不依赖细节,而细 节依赖抽象。

优点:

① 减少类间的耦合性

② 提高系统的稳定性,降低并行开发引起的风险。

③ 提高代码的可读性和可维护性。

作用:适用于大中型项目,是实现开闭原则的重要途径,依赖倒置原则没有实现,就不能 实现对扩展的开放,对修改关闭。

4.接口隔离原则(ISP)

名词解释:一个类对另外一个类的依赖性应当是建立在最小的接口上,使用多个专门的接 口比使用单一的总接口要好。

简述接口隔离原则:

① 一个类对另外一个类的依赖性应当是建立在最小的接口上的。

② 一个借口代表一个角色,不应当将不同的角色都交给一个接口。

③ 不应该强迫客户依赖于它们不用的方法。

作用:只提供调用者需要的方法,屏蔽不必要的方法;带来了设计的灵活性,并降低了整 个项目的风险,当业务变化是能够快速应付。

5.迪米特法则(LoD)

名词解释:一个对象应当对其他对象尽可能少的了解。

作用:减少类之间的关系,降低类之间的耦合。

体现迪米特法则的设计模式有两个:外观模式、中介者模式

6.开闭原则(OCP)

名词解释:一个软件实体应当对扩展开放,对修改关闭。

优点:① 提高复用性 ② 提高可维护性 ③ 提高灵活性 ④ 易于测试

重要性:开闭原则是面向对象设计的终极目标,其他设计原则都可以看做是开闭原则的实 现方法。

1、 里氏替换原则简称:LSP

2、 关于单一职责原则描述错误的是:单一职责原则提高类之间的耦合性。(降低)

3、 关于依赖倒置原则描述错误的是:依赖倒置原则中,高层模块不应该依赖低层模块,但

低层模块依赖与高层模块。(都依赖于其抽象)

4、 设计模式中的六个主要原则包括:单一职责原则、里氏替换原则、依赖倒置原则、接口

隔离原则、迪米特法则和开闭原则。

5、 在设计模式中,对迪米特法则进行应用的设计模式有外观模式和中介者模式

第三章 创建型模式

1.单例模式:一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 在Java中有两种表现形式:饿汉式单例类;懒汉式单例类。

功能上分为:状态单例类;无状态单例类。

2.工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中

3.抽象工厂模式:工厂方法的升级,为创建一组相关或相互依赖的对象提供一个接口,而 且无需指定他们的具体类。

4.建造者模式:将一个复杂对象的构建与其表示分离,使同样的构建过程创建出不同的表示

5.原型模式:用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象。

课后题:

1、 不属于创建型模式的是:策略模式

2、 关于单例模式说法错误的是:单例模式可以具有子类,并进行扩展。(单例模式无法创

建子类,扩展困难)

3、 关于工厂方法模式错误的是:工厂方法模式不可以与其他模式混合使用,不能进行扩展。

(可以与其他模式混合使用)

4、 关于抽象工厂模式说法正确的是:抽象工厂模式与工厂方法模式相似,也具有抽象工厂、

具体工厂、抽象产品和具体产品4个角色;抽象工厂模式是工厂方法模式的进一步抽象,针对的是一族产品

5、 简述建造者模式

将一个复杂对象的构建与其表示分离,使得同样的构建过程,可以创建不同的表示。

6、 简述原型模式

用原型实例指定创建对象的原型,创建新的对象

第四章 结构型模式

课后题:

1、属于结构型模式的是:代理模式、适配器模式、享元模式

2、关于装饰模式不正确的是:

装饰模式只有构件和装饰这两个角色(抽象构件角色、具体构件角色、、装饰角色、具体装饰角色)

3、关于适配器模式不正确的是:适配器模式简化了系统并提高系统的效率(对系统进行了扩展)

4、关于外观模式不正确的是:外观模式满足闭合原则(不满足)

5、简述桥梁模式和享元模式

桥梁模式:将抽象和实现解耦,使得两者可以独立的变化

享元模式:使用共享对象可有效的支持大量的细粒度的对象

第五章 行为型模式(1)

1、模板方法模式的优点:

① 封装不变的部分,扩展可变部分

② 提取公共部分代码,便于维护

③ 行为由父类控制,子类实现。

2、命令模式的优点:

① 类间解耦

② 可扩展性

③ 命令模式结合其他模式会更优秀。

3.责任链模式的优点:

① 将请求和处理分开 ② 提高系统的灵活性。

4策略模式的优点:

① 策略模式提供了管理相关的算法族的办法。

② 策略模式提供了可以替换继承关系的办法。

③ 使用策略模式可以避免使用多重条件转移语句。

5.迭代器模式的优点:

① 迭代器模式简化了访问容器元素的操作,具备一个统一的遍历接口。

② 封装遍历算法,使算法独立于聚集角色。

课后题:

1、不属于行为模式的是:工厂方法模式

2、关于模板方法模式说法错误的是:

模板方法模式破坏了开闭原则(符合开闭原则)

3、关于命令模式说法错误的是

命令模式包括命令和执行命令这两个角色(还有具体命令角色、接受者角色、调用者角色) 命令模式提高类之间的耦合性(降低)

4、关于策略模式说法错误的是:

策略模式只包括抽象策略和具体策略这两个角色(还有环境角色)

5、关于责任链模式说法错误的是:

责任链模式是一种不经常使用的行为模式(常见)

责任链模式提高了程序的性能且易于调试(降低性能,不易调试)

6、迭代器模式的4个角色分别是抽象迭代器、具体迭代器、抽象聚集和具体聚集。

第六章 行为型模式(2)

1.中介者模式:

名词解释:用一个中介对象封装一系列对象的交互,中介者使各对象不需要显式地相互作 用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

适用场景:一个类依赖多个类的情况下,但并不是只要有依赖关系就考虑使用中介者模式。 类图: