设计模式的基础知识是软件评测师考试的重要考点,基本上每年考一道题目,经常出现在上午场的客观选择题当中。设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。核心在于提供了相关问题的解决方案,使得人们可以更加简单方便地复用成功的设计和体系结构。下面就该知识点并结合例题进行总结学习。
一、设计模式的分类
设计模式分为三种类型,共23种,按照设计模式的目的可以分为以下三大类:
(1)创建型模式:单例模式、抽象工厂模式、生成器(建造者)模式、工厂模式、原型模式。
(2)结构型模式:适配器模式、桥接模式、装饰(器)模式、组合模式、外观模式、享元模式、代理模式。
(3)行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。
二、设计模式的关键单词

三、各个设计模式的目的和类图
(1)抽象工厂模式:提供一个创建一系列相关或者相互依赖对象的接口,而无须指定它们具体的类。

(2)生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

(3)工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到其子类。

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

(5)单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

(6)适配器模式:将一个类的接口转换成客户希望的另外一个接口。
类适配器模式类图:

对象适配器模式类图:

(7)桥接模式:将抽象部分与其实现部分分离,使它们都可以独立地变化。

(8)组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。

(9)装饰模式:动态地给一个对象添加一些额外的职责。

(10)外观模式:为子系统中的一组接口提供一个一致的界面,该模式定义了一个高层接口,使得这一子系统更加容易使用。

(11)享元模式:运用共享技术有效地支持大量细粒度的对象。

(12)代理模式:为其他对象提供一个代理以控制对这个对象的访问。

(13)责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

(14)命令模式:将一个请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。

(15)解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

(16)迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示。

(17)中介者模式:用一个中介对象来封装一系列的对象交互。

(18)备忘录模式:在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态。

(19)观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

(20)状态模式:允许一个对象在其内部状态改变时改变他的行为。

(21)策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。

(22)模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。

(23)访问者模式:表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义作用于这些元素的新操作。

下面是近几年对该知识点考察过的真题,以后仍是考试出题的重点,大家要重视起来。
【2017年第44-45题】下图是(1)设计模式的类图,该设计模式的目的是(2)。

(1)
A、适配器
B、桥接
C、装饰
D、代理
(2)
A、将一个类的接口转换为客户期望的另一种接口,使得原本不匹配的接口而无法合作的类可以一起工作
B、将一个抽象与其实现分离开,以便两者能够各自独立地演变
C、动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功
D、为一个对象提供代理以控制该对象的访问
解析:本题考查软件工程中设计模式的基础知识。
适配器模式(关键单词-adapter):将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
桥接模式(关键单词-abstraction/implementor):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
装饰模式(关键单词-decorator):指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
代理模式(关键单词-proxy):为一个对象提供代理以控制该对象的访问。
故正确答案为:(1)B(2)B
【2018年第47-48题】下图是(1)设计模式的类图,该设计模式的目的是(2)。

(1)
A、适配器
B、桥接
C、装饰
D、代理
(2)
A、将一个类的接口转换为客户期望的另一种接口,使得原本因接口不匹配而无法合作的类可以一起工作
B、将一个抽象与其实现分离开,以便两者能够各自独立地演变
C、为一个对象提供代理以控制该对象的访问
D、动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能
解析:本题考查软件工程中设计模式的基础知识。
适配器模式(关键单词-adapter):将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
桥接模式(关键单词-abstraction/implementor):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
装饰模式(关键单词-decorator):指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
代理模式(关键单词-proxy):为一个对象提供代理以控制该对象的访问。
故正确答案为:(1)C(2)D
【2019年第47-48题】下图是(1)设计模式的类图,该设计模式的目的是(2)。

(1)
A、适配器
B、桥接
C、装饰
D、责任链
(2)
A、将一个类的接口转换为客户期望的另一种接口,使得原本因不匹配的接口而无法合作的类可以一起工作
B、将一个抽象与其实现分离开,以便两者能够各自独立地演变
C、动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能
D、使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
解析:本题考查软件工程中设计模式的基础知识。
适配器模式(关键单词-adapter):将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
桥接模式(关键单词-abstraction/implementor):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
装饰模式(关键单词-decorator):指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
责任链模式(关键单词-handler):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有-一个对象处理它为止。
故正确答案为:(1)D(2)D
作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101
写于2021年10月21日
作者:昊洋讲师
版权所有,侵权必究




