【PPT】适配器模式 和 桥接模式

【PPT】适配器模式 和 桥接模式

【PPT】适配器模式 和 桥接模式

独立观察员 2022 年 11 月 15 日

为之前公司准备的分享 PPT,后来没用上。关于设计模式中的 适配器模式桥接模式,主要参考资料是公众号 “十一学技术” 的相关文章(《设计模式的艺术》中相关篇章的 C# 版)以及《大话设计模式》等。现将全部 PPT 页面截图贴上,完整 PPT 获取方式见文末。

 

一、PPT 截图

1.0、封面和目录

【PPT】适配器模式 和 桥接模式插图

【PPT】适配器模式 和 桥接模式插图1

 

1.1、设计模式概述

【PPT】适配器模式 和 桥接模式插图2

【PPT】适配器模式 和 桥接模式插图3

【PPT】适配器模式 和 桥接模式插图4

【PPT】适配器模式 和 桥接模式插图5

【PPT】适配器模式 和 桥接模式插图6

摘抄自《大话设计模式》

 

1.2、结构型模式特点

【PPT】适配器模式 和 桥接模式插图7

【PPT】适配器模式 和 桥接模式插图8

[1] https://wenku.baidu.com/view/283ce0ca0a75f46527d3240c844769eae009a381.html [2] https://blog.csdn.net/weixin_44777669/article/details/116561497/ [3] https://blog.csdn.net/xyzyhs/article/details/103164185/ 

 

1.3、适配器模式

【PPT】适配器模式 和 桥接模式插图9

【PPT】适配器模式 和 桥接模式插图10

【PPT】适配器模式 和 桥接模式插图11

【PPT】适配器模式 和 桥接模式插图12

  • Target(目标抽象类):目标抽象类定义客户所需要的接口,可以是一个抽象类或接口,也可以是具体类。
  • Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对 Adaptee 和 Target 进行适配。适配器类是适配器模式的核心,在对象适配器模式中,它可以通过继承 Target 并关联一个 Adaptee 对象使二者产生联系。
  • Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配。适配者一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码。

 

【PPT】适配器模式 和 桥接模式插图13

IScoreOperation 接口充当抽象目标,QuickSort 和 BinarySearch 充当适配者,OperationAdapter 充当适配器

 

【PPT】适配器模式 和 桥接模式插图14

【PPT】适配器模式 和 桥接模式插图15

 

1.4、桥接模式

【PPT】适配器模式 和 桥接模式插图16

【PPT】适配器模式 和 桥接模式插图17

在蜡笔中,颜色和型号两个不同的变化维度耦合在一起,无论是对颜色进行扩展,还是对型号进行扩展,都会对另一种维度产生影响。但在毛笔中,颜色和型号进行了分离,增加新的颜色或型号对另一方都没有任何影响。如果使用软件工程中的术语,可以认为,在蜡笔中颜色和型号之间存在较强的耦合性,而毛笔很好的将二者解耦,使用起来非常灵活,扩展也更为方便。

 

【PPT】适配器模式 和 桥接模式插图18

由于采用了多层继承结构,导致系统中的类的个数急剧增加。在该设计方案中,具体层类的个数 = 所支持的图像文件格式数 X 所支持的操作系统数。上图中类的个数已经达到了 17 个。

系统扩展麻烦,由于每一个具体类既包含图像文件格式信息,又包含了操作系统信息,因此无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类。

 

【PPT】适配器模式 和 桥接模式插图19

  • Abstraction(抽象类):其中定义了一个 Implementor (实现类接口)类型的对象并可以维护该对象。抽象类与 Implementor 之间具有关联关系,它既可以包含抽象业务方法,也可以包含具体业务方法。
  • RefinedAbstraction(扩充抽象类):扩充由 Abstraction 定义的接口,通常情况下它不再是抽象类而是具体类。扩充抽象类实现了在 Abstraction 中声明的抽象业务方法,在 RefinedAbstraction 中可以调用在 Implementor 中定义的业务方法。
  • Implementor(实现类接口):定义实现类的接口,这个接口不一定要与 Abstraction 的接口完全一致,事实上这两个接口可以完全不同。一般而言,Implementor 接口仅提供基本操作,而 Abstraction 定义的接口可能会做更多、更复杂的操作。Implementor 接口对这些基本操作进行了声明,而具体实现交给其子类。通过关联关系,在 Abstraction 中不仅拥有自己的方法,还可以调用到 Implementor 中定义的方法,使用关联关系来代替继承。
  • ConcreteImplementor(具体实现类):具体实现 Implementor 接口,在不同的 ConcreteImplementor 中提供基本操作的不同实现。在程序运行时,ConcreteImplementor 对象将替换其父类对象,提供给抽象类具体的业务操作方法。

 

【PPT】适配器模式 和 桥接模式插图20

【PPT】适配器模式 和 桥接模式插图21

将操作系统和图像文件格式两个维度分离。对于图片而言,由于图片格式是其固有的维度,因此可以设计一个抽象的图片类,在该类中声明并部分实现图片的业务方法,而将各种格式的图片作为其子类。绘制方法是图片的另一个维度,由于它与图片之间存在一种 “设置” 的关系,因此可以提供一个抽象的绘制接口,而将具体的系统绘制类作为实现该接口的子类。在此,格式可以认为是图片的抽象部分,而绘制是图片的实现部分。

 

【PPT】适配器模式 和 桥接模式插图22

【PPT】适配器模式 和 桥接模式插图23

【PPT】适配器模式 和 桥接模式插图24

【PPT】适配器模式 和 桥接模式插图25

 

二、参考资料及 PPT 获取方法

参考:

1、[一起学习设计模式 --07. 适配器模式](https://mp.weixin.qq.com/s/L0XHVEvitMX-9B4YFY6phQ)

2、[一起学习设计模式 --08. 桥接模式](https://mp.weixin.qq.com/s/muLEonPdTdvch89im_0OEA)

3、《大话设计模式》/ [读书笔记](https://mp.weixin.qq.com/s/869acDHq_6Nx5C0TPXh9Ew)

4、互联网

 

PPT 获取方法:

关注微信公众号 “独立观察员博客”,回复 “PPT 适配器” 即可获取下载地址。

【PPT】适配器模式 和 桥接模式插图26

 

Leave a Reply