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

【PPT】适配器模式 和 桥接模式
目录
【PPT】适配器模式 和 桥接模式
一、PPT 截图
1.0、封面和目录
1.1、设计模式概述
1.2、结构型模式特点
1.3、适配器模式
1.4、桥接模式
二、参考资料及 PPT 获取方法
独立观察员 2022 年 11 月 15 日

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

一、PPT 截图
1.0、封面和目录

1633caa7f3bffbec6ffb1082bca902db.png

1bc1f8a6a2ef061d3ae1e4dccfe21481.png

1.1、设计模式概述

9e6b80ae79d3ac680fd6850721172185.png

bbd0754210fd85f276f72f8ba80c9b8d.png

97dc658aa4d93e89776ae671b80ea3d7.png

aabb7252db4dd704c325eba61241397c.png

0d3e853fb1a98b1e7678acfe82701d28.png


摘抄自《大话设计模式》

1.2、结构型模式特点

607fb3728d4f4caae3cf2b01bec2c093.png

66b34c24af480cb17ee187f39b849134.png


[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、适配器模式

e31c292606771edc8a8344875d376abd.png

2ea5419e1bc28f39f36b3f7253e30474.png

720d3b10ceb58ee04ebe8689ed196191.png

437b06a23a0a8e3a1d408ba2b39ba86b.png


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

30ed637eb4efd522fcda2d803b2985af.png


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

00c0fccad685a04a365ac6b8c0fb860d.png

10bdd061f5d301d83e42959f25fdd83e.png

1.4、桥接模式

68cc3688a22cfa8bebdaa35cfb2af6a3.png

cc16b442f7bf61b6243219f8a341f8c7.png


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

75afbd4c021e8ed68f0f020544143572.png


由于采用了多层继承结构,导致系统中的类的个数急剧增加。在该设计方案中,具体层类的个数 = 所支持的图像文件格式数 X 所支持的操作系统数。上图中类的个数已经达到了 17 个。
系统扩展麻烦,由于每一个具体类既包含图像文件格式信息,又包含了操作系统信息,因此无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类。

d709911460cc47cb0e4726d611eec795.png


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

da41a0128e1084f3b25894faf5b32d50.png

70057497418b553b2c67c13d6c3bb507.png


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

9fd9f1b0c87621690d3c209e2d104ae5.png

8271ead2464ca5d83da2e65ec3966ed8.png

a8b59e4b5e811542ec228a8405be5005.png


afe41d52036559c7bac8d6697577a0a9.png

二、参考资料及 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 适配器” 即可获取下载地址。

aa2971c98e8d9789c8eb585932cd51c0.png



原创文章,转载请注明:转载自独立观察员
本文链接地址:【PPT】适配器模式 和 桥接模式 [http://dlgcy.com/ppt-adapter-pattern-and-bridge-pattern/]


读书笔记

[读书笔记] 《修炼之道:.NET 开发要点精讲》

[读书笔记] 《大话设计模式》

作品

Windows 小工具之 Wifi 固定器

利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具

使用 WPF 版简易 SIP 服务器向 GB28181 摄像头发送直播请求

下载中转加速器 VPSDownloader.NET(.NET Core 程序部署到 Linux 系统) 

『简易日志』NuGet 日志包 SimpleLogger

PDF 目录编辑器使用介绍

Winform

Winform 进度条弹窗和任务控制

Winform 通过 WebBrowser 与 JS 交互

WordPress

WordPress 网站使用 “微信机器人高级版” 插件连通微信公众号

WordPress 在侧边栏添加显示相关文章功能

自用 WordPress 插件推荐 Ⅱ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask 【第七篇】Flask中的wtforms使用

一、简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。 安装: pip3 install wtforms 二、简单使用wtforms组件 1、用户登录 具体代码: from flask import Flask,render_template,request,…

为了避免内存攻击,美国国家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift,但将 C 和 C++ 置于一边...

本文翻译自两篇文章,第一篇是对美国国家安全局在“软件内存安全”网络安全信息表的解读,第二篇是普及什么是内存安全,为什么它很重要?第一篇 为了避免内存攻击,美国国家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift&a…

.NET周报【11月第2期 2022-11-15】

国内文章统一的开发平台.NET 7正式发布https://www.cnblogs.com/shanyou/archive/2022/11/09/16871945.html在 2020 年规划的.NET 5功能终于在.NET 7 完成了,为微软和社区一起为多年来将不同的开发产品统一起来的努力加冕,未来只有一个.NET, 回顾.NET 20…

chrome 悬停大图插件_Google Chrome浏览器的悬停卡:我不想要的我最喜欢的新东西

chrome 悬停大图插件If you only have a handful of open tabs in Google Chrome, it’s easy to tell what they are. But as you start to collect more tabs (or make the window smaller), it gets harder. That’s where Hover Cards come in. 如果您在Google Chrome浏览器…

GitHub Codespaces 安装 .NET 7

本文主要介绍如何在 GitHub Codespaces 这个云上 IDE 环境中安装 .NET 7背景GitHub 的 Codespaces 可以让我们随时随地编写代码,一些简单的修改也非常方便快捷。特别是 .NET 7 发布后,一些可以直接升级的小项目只需要更改配置就可以了,我们可…

chrome怎么隐藏浏览器_如何使用Google Chrome的隐藏阅读器模式

chrome怎么隐藏浏览器Chrome 75 has a hidden “Reader” mode that strips web pages down to the bare minimum to make them easier to, well, read. But it’s not enabled by default—here’s how to get it now. Chrome 75具有隐藏的“阅读器”模式,可将网页…

angularjs中使用swiper时不起作用,最后出现空白位

controller.js中定义swipers指令: var moduleCtrl angular.module(newscontroller,[infinite-scroll,ngTouch,news.service]) .directive(swipers,swipers); swipers.$inject [$timeout]; function swipers($timeout) {return {restrict: "EA",scope: {…

使用Jupyter记事本记录和制作.NET可视化笔记

前言:对于记录笔记的工具特别多,不过对于程序员来说,记录笔记程序代码运行结果演示可以同时存在,无疑会极大增加我们的笔记的可读性和体验感。以前在写python的时候,使用jupyter的体验很好,所以此处做一个基…

火狐上如何使用谷歌翻译插件_将Google翻译功能添加到Firefox

火狐上如何使用谷歌翻译插件Are you looking for a quick no-fuss way to translate webpages? Then you will want to take a good look at the Translate extension for Firefox. 您是否正在寻找一种快速简便的方法来翻译网页? 然后,您将需要很好地了…

桌面显示激活windows_愚蠢的怪胎技巧:如何在桌面上显示Windows版本

桌面显示激活windowsHave you ever noticed during all the beta releases of Windows, there’s always a Windows version on the desktop in the lower right-hand corner? Here’s how that “feature” is enabled or disabled. 您是否曾经在Windows的所有beta版本中都注…

怎样取消outlook约会_快速提示:在Outlook 2010中设置和取消约会

怎样取消outlook约会Getting everyone in one place at the same time for appointments can be daunting at times. Outlook makes it easy to setup appointments and invite attendees as well, and here we look at doing it in Outlook 2010. 同时让每个人都集中在一个地方…

重视和解决 ABP 分布式事件乱序问题

ABP Framework 5.0 实现了单体应用场景下,收件箱和发件箱的事件严格顺序性。但在微服务或多数据库场景下,由于网络时延和设施效率的限制, 分布式事件将不再是 Linearizability [1] 的,因此必然会存在物理时间上的收件乱序。借用 D…

个人博客建站方案推荐

1.服务器选择 正值双十一来临之际各大服务器提供商又大量的优惠活动,各位要步入个人站长行列的小哥们时机要把握好了,我个人使用过阿里云的服务器,腾讯云的服务器,华为云的服务器。其实,个人感觉就放个博客&#xff0c…

android启用hdcp_如何在Android上启用优先收件箱(和设置仅重要通知)

android启用hdcpYesterday Google released an updated Gmail application for Android 2.2 phones that supports the Priority Inbox feature—and more importantly, allows you to change your notifications to only alert you for important email. Let’s take a look. …

.Net CLR GC plan_phase二叉树和Brick_table

楔子Plan_Phase(GC的计划阶段)很早就接触了,但是后面一直没用到,忘记了,此次又用到了,几乎忘光了,费了很大力气理解它,记录下,以免又忘记了。主题计划阶段(plan_phase)主要就两个部分&#xff0…

scrapy爬虫启示录-小伙子老夫看你血气方刚这本《爬虫秘录》就传给你了

文章来源: IT源点 第一章 误入歧途 每个学习爬虫的人都有一颗爱美的心,俺也是一样的。那么多的美眉图片,不薅下来,没了谁负责。于是夜里孤枕难眠的老男孩开始了他的撸码之旅。从此在学习爬虫,学习Python的道路上越走…

自己设置假期的日历控件_在假期旅行时使用PC娱乐自己

自己设置假期的日历控件Staying connected may be hard no matter what network you are on, and in flight Wi-Fi isn’t pervasive enough to count on. Here are tips and tricks to keep yourself entertained when unplugged and traveling. 无论您使用什么网络&#xff0…

.Net CLR异常和windows C++ 异常调用栈简析

楔子前面一篇研究了下C异常的,这篇来看下,CLR的异常内存模型,实际上都是一个模型,承继自windows异常处理机制。不同的是,有VC编译器(vcruntime.dll)接管的部分,被CLR里面的函数ProcessCLRExcept…

Codeforces936C. Lock Puzzle

给个串&#xff0c;只能用操作shift x表示把后面x个字符翻转后放到串的前面。问s串怎么操作能变t串。n<2000&#xff0c;操作次数<6100。 打VP时这转来转去的有点晕。。。 可以想一种逐步构造的方法&#xff0c;即从一个小的完成构造的部分通过一顿操作&#xff0c;在不影…

公共服务领域英文译写规范_公共领域日:对版权和公共领域重要性的思考

公共服务领域英文译写规范The first of the year is Public Domain Day, a day intended to call attention to copyright issues and the public domain. At the Center for the Study of the Public Domain they have an interesting (and sobering) review of works that wo…