设计模式-结构型和行为型设计模式
| 项目 | 内容 |
|---|---|
| 来源 | 录播 |
| 章节 | 第十三章-面向对象设计 |
| 标签 | 讲义 |
| 页数 | 15 |
| 总字数 | 4106 |
| 原始课件 | 基础录播课/第十三章-面向对象设计/设计模式-结构型和行为型设计模式.pdf |
本文由课件自动整理,页内文字按原始讲义阅读顺序还原;
[图]表示该位置存在图示,图示内容请对照原始课件查看。
目录
- 第 1 页 · N E W P L A
- 第 2 页 · 大纲介绍
- 第 3 页 · 设计模式-结构型
- 第 4 页 · 设计模式-结构型
- 第 5 页 · 设计模式-结构型
- 第 6 页 · 设计模式
- 第 7 页 · 设计模式-行为型
- 第 8 页 · 设计模式-行为型
- 第 9 页 · 设计模式-行为型
- 第 10 页 · 设计模式
- 第 11 页 · 真题
- 第 12 页 · 真题
- 第 13 页 · 真题
- 第 14 页 · 真题
- 第 15 页 · T H
第 1 页 · N E W P L A
N
软考高级架构师
一
段
新
征
程
第 2 页 · 大纲介绍
提示:本页以图示为主,下列文本为图中标注文字。
[图]
第 3 页 · 设计模式-结构型
结构型设计模式:关注如何将对象和类组合成更大的结构,以便更好地实现系统的整体结构。这些模式有助于解决对象之
间的组合、接口和继承等关系,从而提高代码的可扩展性和可维护性
适配器模式(Adapter Pattern):
适配器模式允许两个不兼容的接口协同工作。就像使用电源适配器将外国电器插头适配到国内插座一样,适配器模式可以
使不同的类一起工作。
生活中的例子:
想象你有一台笔记本电脑,但只有一个USB-C接口,而你的打印机只支持USB-A接口。你可以使用USB-C到USB-A的适配
器,使两者兼容。
桥接模式(Bridge Pattern):
桥接模式分离了一个对象的抽象部分和具体部分,使它们可以独立地变化。这个模式就像一座桥,将两个独立的领域连接
起来。
生活中的例子:
想象你有一辆汽车,汽车的品牌(如奥迪、宝马)和颜色(如红色、蓝色)是两个独立的变化维度。桥接模式允许你将品
牌和颜色抽象出来,使你可以轻松地组合不同品牌和颜色,例如创建一个红色的奥迪或蓝色的宝马。
第 4 页 · 设计模式-结构型
组合模式(Composite Pattern):
组合模式允许将对象组织成树状结构,使单个对象和组合对象都可以一致地对待。这就像将多个文件夹和文件组织成文件
系统树一样。
生活中的例子:
在操作系统中,文件夹可以包含文件和其他文件夹,创建了一个树状的组织结构,你可以对文件夹和文件执行相似的操作,
如复制、删除等。
装饰器模式(Decorator Pattern):
装饰器模式允许动态地为对象添加新的功能,而无需修改其源代码。这就像在你的家中不断地添加新的家具或装饰来改善
它的外观和功能。
生活中的例子:
如果你有一台智能音响,可以通过添加新的语音助手技能(如天气查询或音乐播放)来扩展其功能,而不需要改变音响的
核心设计。
外观模式(Facade Pattern):
外观模式提供了一个简化的接口,用于访问复杂系统中的一组接口。这个模式就像建筑物的外立面,隐藏了建筑内部复杂
的结构,使外部用户可以轻松访问。
生活中的例子:
在计算机操作系统中,你通常使用一个图形用户界面(GUI),它提供了一个易于使用的外观,隐藏了底层操作系统的复杂
性。你可以点击图标、打开应用程序,而无需了解操作系统的内部工作原理。
第 5 页 · 设计模式-结构型
享元模式(Flyweight Pattern):
享元模式旨在最小化内存或计算开销,通过共享尽可能多的相似对象来实现。这就像在共享办公空间中租用一
个工作区,多个人可以共享同一空间,减少了资源浪费。
生活中的例子:
在图像编辑软件中,当多个图像元素共享相同的颜色或图案时,可以使用享元模式来减少内存占用。相同的颜
色或图案可以被多个图像元素引用,而不是为每个元素都存储一份相同的数据。
代理模式(Proxy Pattern):
代理模式允许一个对象代表另一个对象进行控制访问。就像你聘请一个房产经纪人代表你购买房产,代理模式
可以控制对另一个对象的访问。
生活中的例子:
在计算机网络中,代理服务器充当客户端和目标服务器之间的中间层,用于缓存、过滤或加速请求,以提供更
好的访问控制和性能。
第 6 页 · 设计模式
提示:本页以图示为主,下列文本为图中标注文字。
速记口诀:外侨组员带配
饰
[图]
第 7 页 · 设计模式-行为型
行为型设计模式:关注对象之间的通信、职责分配和算法的交互方式。它们帮助我们更好地管理对象之间的关
系,使系统更具灵活性和可维护性
责任链模式(Chain of Responsibility Pattern):
责任链模式就像是传递请求。多个对象依次尝试处理请求,直到有一个对象能够处理为止。
生活中的例子: 在组织中,员工的请假申请可能需要经过多个级别的审批,每个级别的主管可以决定是否批准
请假。
命令模式(Command Pattern):
命令模式就像使用遥控器来控制设备。你将命令封装在遥控器按钮中,然后可以随时执行命令。
生活中的例子: 电视遥控器是命令模式的经典示例。你可以使用遥控器来执行命令,如打开电视、切换频道或
调整音量。
解释器模式(Interpreter Pattern):
解释器模式用于处理语言解释和编译器等领域,它定义了一种语言的语法表示,并提供了解释器来解释这种语
法。
生活中的例子: 在编程中,正则表达式就是解释器模式的一个实例,用于匹配和解释字符串模式。
第 8 页 · 设计模式-行为型
迭代器模式(Iterator Pattern):
迭代器模式就像是遍历集合。它提供了一种顺序访问集合元素的方法,而无需暴露集合的内部结构。
生活中的例子: 在编程中,你可以使用迭代器来遍历数组、列表或集合中的元素,而无需知道底层数据结构。
中介者模式(Mediator Pattern):
中介者模式就像是一个中间人协调多个对象之间的交互。它减少了对象之间的直接通信,降低了耦合度。
生活中的例子: 在一个团队中,项目经理可以充当中介者,协调团队成员之间的合作和沟通,以确保项目的顺
利进行。
备忘录模式(Memento Pattern):
备忘录模式就像是保存和还原状态。它允许你保存对象的状态,以便将来可以还原到先前的状态。
生活中的例子: 在文本编辑器中,你可以使用撤销和重做功能,这就是备忘录模式的应用。你可以撤销到之前
的状态,然后再次重做。
观察者模式(Observer Pattern):
观察者模式就像订阅通知。多个观察者(订阅者)订阅主题(发布者),当主题有新信息时,观察者会自动接
收通知。
生活中的例子: 许多社交媒体平台使用观察者模式,当你关注某个用户或主题时,系统会将他们的更新信息发
送给你。
第 9 页 · 设计模式-行为型
状态模式(State Pattern):
状态模式就像人的不同情绪状态。你可以处于高兴、生气或伤心等不同的状态,每种状态下的行为可能不同。
生活中的例子: 在自动售货机中,售货机可能有不同的状态,如待机、售卖中、缺货等。每种状态下,售货机
的行为都不同。
策略模式(Strategy Pattern):
策略模式就像选择不同的解决方案来解决同一个问题。你可以根据情况选择不同的策略,以实现相同的目标。
生活中的例子: 在旅行规划中,你可以选择不同的交通工具(策略),如汽车、火车或飞机,来达到相同的目
的地。
模板方法模式(Template Method Pattern):
模板方法模式就像是定义了一个算法的框架,但允许子类实现其中的一些步骤。
生活中的例子: 在烹饪中,制作一道菜的过程可能包括一些固定的步骤,如准备、烹饪和装盘,但每道菜的具
体步骤和材料可能不同。
访问者模式(Visitor Pattern):
访问者模式就像是访问不同类型的元素。你可以定义不同的访问者来执行不同类型元素的操作。
生活中的例子: 在图书馆中,你可能有不同类型的书籍,如小说、科普书和艺术书。不同类型的书籍可能需要
不同类型的读者来浏览和理解。
第 10 页 · 设计模式
速记口诀:观摩(模)对(迭)策,责令解放(访),戒(介)忘台(态
)
[图]
[图]
第 11 页 · 真题
【2014】下图所示为(44)设计模式,适用于
[图]
(45)。
(44)
A.适配器(Adapter)
B.责任链(Chain of Responsibility)
C.外观(Facade)
D.桥接(Bridge)
(45)
A.有多个对象可以处理一个请求,在运行时
刻自动确定由哪个对象处理
B.想使用一个已经存在的类,而其接口不符
合要求
C.类的抽象和其实现之间不希望有一个固定
的绑定关系
D.需要为一个复杂子系统提供一个简单接口
第 12 页 · 真题
【2014】下图所示为()设计模式,适用于()。
A.抽象工厂(Abstract Factory)
B.生成器(Builder)
C.工厂方法(Factory Method)
D.原型(Prototype)
A.
一个系统要由多个产品系列中的一个来配置时
B.当一个类希望由它的子类来指定它所创建的对象时
C.当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时
D.
当一个系统应该独立于它的产品创建、构成和表示时
[图]
第 13 页 · 真题
【2015】(45)设计模式能够动态地给一个对象添加一些额外的职责而无需修改此对象的结构;(46)设计模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类;欲使一个后端数据模型能够被多个前端用户
界面连接,采用(47)模式最适合。
(45)
A.组合(Composite)
B.外观(Facade)
C.享元(Flyweight)D
D.装饰器(Decorator)
(46)
A.工厂方法(Factory Method)
B.享元(Flyweight)
C.观察者( Observer)
D.中介者(Mediator)
(47)
A.装饰器(Decorator)
B.享元(Flyweight)
C.观察者(Observer)
D.中介者(Mediator)
第 14 页 · 真题
【2021】股票交易中,股票代理(Broker)根据客户发出的股票操作指示进行股票的买卖操作,设计如下所
示类图。该设计采用( )模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;
对请求排队或记录请求日志,以及支持可撤销的操作,其中,( )声明执行操作的接口。该模式属于( )
模式,该模式适用于( )
[图]
(A)命令(Command)
(B)观察者(Observer)
(C)状态(State)
(D)中介者(Mediator)
(A) Operation
(B) sellOperation/BayOperation/ViewOperation
(C) Broker
(D) Stock
(A)结构类型
(B)结构型对象
(C)创建类型
(D)行为型对象
(A)一个对象必须通知其他对象,而它又不能假定其他对象是谁
(B)抽象出需要执行的动作以参数化某对象
(C)一个对象的行为决定于其状态且必须在运行时刻根据状态改变行为
(D)一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象
第 15 页 · T H
E E N D
功不唐捐,玉汝于成!
开
启
新
征
程