【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.pswp.cn/news/281196.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281196.shtml
英文地址,請注明出處:http://en.pswp.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,…

CSS自定義滾動條樣式

css通過滾動條偽類來修改滾動條樣式,偽類名稱如下 ::-webkit-scrollbar 滾動條整體部分 ::-webkit-scrollbar-track 滾動條軌道(里面裝有滑塊 thumb) ::-webkit-scrollbar-thumb 滾動條滑塊 ::-webkit-scrollbar-button 滾動條軌道兩端按鈕 …

為了避免內存攻擊,美國國家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift,但將 C 和 C++ 置于一邊...

本文翻譯自兩篇文章,第一篇是對美國國家安全局在“軟件內存安全”網絡安全信息表的解讀,第二篇是普及什么是內存安全,為什么它很重要?第一篇 為了避免內存攻擊,美國國家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift&a…

自學python(一)

一、入門儀式 學習一門新語言必不可少的一件事: print("Hello world!")二、基礎知識 1、注釋: 單行注釋: 1 print("Hello world!") #輸出Hello world! 多行注釋: 這是多行注釋 這是多行注釋 這是多行注釋…

.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…

如何像使用AspNetCore中的Controllers 和 Actions一樣處理MQTT消息

在物聯網項目中, 處理MQTT的topic時費工費力, 代碼一團亂, 什么才是最好的姿勢?這里面我們極力介紹 MQTTnet.AspNetCore.Routing 項目,MQTTnet AspNetCore Routing 是https://github.com/Atlas-LiftTech/MQTTnet.AspN…

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. 您是否正在尋找一種快速簡便的方法來翻譯網頁? 然后,您將需要很好地了…

Android 4.X 系統加載 so 失敗的原因分析

1 so 加載過程 so 加載的過程可以參考小米的系統工程師的文章loadLibrary動態庫加載過程分析 2 問題分析 2.1 問題 年前項目里新加了一個 so庫,但發現native 方法的找不到的 crash 好多,好些都是報了java.lang.unsatisfiedlinkerror native method not f…

桌面顯示激活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版本中都注…

服務網格:限流保護 (上)

背景限流是服務治理中保護服務的重要手段之一,也是最直接有效的手段,它可以保護服務不被瞬間的大流量沖垮,類似電路中的“保險絲”。在服務上線前,我們都會對服務進行基準測試,來了解可通過的最大“電流”。上面所說的…

博弈論進階之Anti-SG游戲與SJ定理

前言 在上一節中,我們初步了解了一下SG函數與SG定理。 今天我們來分析一下SG游戲的變式——Anti-SG游戲以及它所對應的SG定理 首先從最基本的Anti-Nim游戲開始 Anti-Nim游戲是這樣的 有兩個頂尖聰明的人在玩游戲,游戲規則是這樣的: 有\(n\)堆…

怎樣取消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…

linux系統下nginx安裝目錄和nginx.conf配置文件目錄

linux系統下nginx安裝目錄和nginx.conf配置文件目錄 1、查看nginx安裝目錄 輸入命令 # ps -ef | grep nginx 返回結果包含安裝目錄 root 2662 1 0 07:12 ? 00:00:00 nginx: master process /usr/sbin/nginx 2、查看nginx.conf配置文件目錄 輸入命令 # nginx…