設計模式簡述(十九)橋梁模式

橋梁模式

  • 描述
  • 基本組件
  • 使用

描述

橋梁模式是一種相對簡單的模式,通常以組合替代繼承的方式實現。
從設計原則來講,可以說是單一職責的一種體現。
將原本在一個類中的功能,按更細的粒度拆分到不同的類中,然后各自獨立發展。

基本組件

該模式,通常包含:抽象化角色(持有實現化角色完成功能)、實現化角色、修正抽象化角色、具體實現化角色

  • 實現化角色
public interface Implementor {void implAction();
}
  • 具體是實現化角色
public class MyImplementor implements Implementor {@Overridepublic void implAction() {System.out.println("MyImplementor action ....");}
}
  • 抽象化角色
public abstract class Abstraction {private final Implementor implementor;public Abstraction(Implementor implementor) {this.implementor = implementor;}public void  doAction() {implementor.implAction();action();}protected abstract void action();
}
  • 修正抽象化角色
public class RefinedAbstraction extends Abstraction {public RefinedAbstraction(Implementor implementor) {super(implementor);}@Overrideprotected void action() {System.out.println("RefinedAbstraction action ...");}
}

使用

public class Sample {public static void main(String[] args) {Abstraction abstraction = new RefinedAbstraction(new MyImplementor());abstraction.doAction();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905056.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905056.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905056.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ImportError: DLL load failed: 找不到指定的程序。

查看其他博客說是缺少libssl-1_1-x64.dll 和 libcrypto-1_1-x64.dll 然后去下載放到博客說的目錄下 沒有用 解決不了一點 OpenSSL for Windows 64位 完整安裝包 在這里 項目地址: https://gitcode.com/open-source-toolkit/eb627 注意事項 此安裝包僅適用于64位Windows系…

電池單元和電極性能

電芯設計中的挑戰 對于電池制造商來說,提高電池能量和功率密度至關重要。在高功率密度和長循環壽命之間取得平衡是電池設計中的關鍵挑戰,通常需要仔細優化材料、電極結構和熱管理系統。另一個關鍵挑戰是通過優化重量體積比來降低電池單元的總體成本。 工…

數據加密與隱私保護:讓你的信息固若金湯

數據加密與隱私保護:讓你的信息固若金湯 大家好,我是 Echo_Wish,今天聊聊一個 人人都關心、但很多人沒做好 的話題——數據加密與隱私保護的最佳實踐。 為什么要重視數據安全? 現在是數字化時代,從個人照片、銀行卡信息到企業機密,數據泄露的風險無處不在。你可能覺得自…

【高數上冊筆記篇02】:數列與函數極限

【參考資料】 同濟大學《高等數學》教材樊順厚老師B站《高等數學精講》系列課程 (注:本筆記為個人數學復習資料,旨在通過系統化整理替代厚重教材,便于隨時查閱與鞏固知識要點) 僅用于個人數學復習,因為課…

C++(8):類型限定符

目錄 1. const:定義常量 2. volatile:易變性修飾 3. restrict(C非標準) 4. mutable:突破常量性 5. static:靜態存儲 6. register(已棄用) 分類修正說明 1. const:…

Nginx yum 安裝

一、環境準備 一臺裝有 CentOS 7.9 的虛擬機 二、安裝 安裝 yum install -y nginx -y:所有的安裝選項都選擇 yes。 啟動 nginx systemctl enable nginx --now enable:設置 nginx 為開機啟動。--now:馬上啟動 nginx。 查看 nginx 服務狀態…

【5分鐘學Docker】Docker快速使用

目錄 1. 概述 2. 基本操作 2.1. 鏡像操作 2.2. 容器操作 2.3. 運行操作 2.4. 鏡像保存 2.5. 鏡像分享 3. 高級操作 4. 掛載 4.1. 目錄掛載 4.2. 卷映射 1. 概述 Docker 鏡像有鏡像名稱和TAG 2. 基本操作 2.1. 鏡像操作 查看鏡像 docker images docker image ls …

5000字總結 HTML5 中的音頻和視頻,關羽標簽、屬性、API 和最佳實踐

HTML5 音頻與視頻開發完全指南&#xff1a;標簽、屬性、API 與最佳實踐 一、引言&#xff1a;HTML5 媒體時代的到來 在 HTML5 之前&#xff0c;網頁中的音頻和視頻播放依賴 Flash、Silverlight 等第三方插件&#xff0c;存在兼容性差、性能瓶頸和安全隱患。HTML5 引入的 <…

【C語言】(9)—指針3

文章目錄 一、字符指針的深入理解二、數組指針詳解三、二維數組傳參的本質四、函數指針及其應用五、函數指針數組與轉移表 一、字符指針的深入理解 1.1 字符指針的基本使用 字符指針(char*)是指向字符類型數據的指針&#xff0c;它有兩種常見的使用方式&#xff1a; // 方式一…

MDK調試技巧

1、自動生成反匯編 fromelf -c -o "$LL.txt" "#L" 解釋&#xff1a; 1、fromelf 是 ARM Compiler 工具鏈中的一個命令行工具&#xff0c;從fromelf這個名字上我們就能看到它是用來處理elf文件的&#xff0c;elf 全稱 Executable and Linking Format &…

嵌入式STM32學習——433M無線遙控燈

1.433M無限模塊工作原理&#xff1a; 數據發射模塊的工作頻率為315M&#xff0c;采用聲表諧振器SAW穩頻&#xff0c;頻率穩定度極高&#xff0c;當環境溫度在-25~85度之間變化時&#xff0c;頻飄僅為3ppm。 接收到信號&#xff0c;接收模塊對應針腳輸出高電平&#xff0c;有DO…

JDBC工具類的三個版本

一、JDBC連接數據庫的7個步驟 1、加載驅動 2、獲取連接 3、編寫sql 4、獲取執行sql的stmt對象 有兩種 stmt&#xff08;存在sql注入問題 字符串拼接&#xff09; pstmt&#xff08;預編譯可以防止sql注入&#xff09; 5、執行sql 拿到結果集 6、遍歷結果集 7、關閉資源…

3.1/Q1,Charls最新文章解讀

文章題目&#xff1a;Predictive model for sarcopenia in chronic kidney disease: a nomogram and machine learning approach using CHARLS data DOI&#xff1a;10.3389/fmed.2025.1546988 中文標題&#xff1a;慢性腎病肌肉減少癥的預測模型&#xff1a;使用 CHARLS 數據的…

DEEPPOLAR:通過深度學習發明非線性大核極坐標碼(2)

目錄 2.問題的提出和背景 2.1 信道編碼 2.2.極化碼 極坐標編碼 極坐標解碼 原文&#xff1a;《DEEPPOLAR: Inventing Nonlinear Large-Kernel Polar Codes via Deep Learning》 2.問題的提出和背景 2.1 信道編碼 信道編碼是一種為傳輸添加冗余的技術&#xff0c;使其對…

手機當電腦播放器 soundwire

soundwire server免費下載_soundwire serverPC下載_3DM軟件 win11可用延遲1秒 安卓端音頻緩沖區大小改成8k延遲就沒那么夸張了 我用audiorelay連上了沒聲音

LVGL中的事件

文章目錄 &#x1f9f1; 一、什么是 LVGL 事件&#xff1f;&#x1f3af; 二、事件回調的注冊參數解釋&#xff1a;示例&#xff1a; &#x1f4da; 三、常見事件類型&#xff08;lv_event_code_t&#xff09;? 1. 輸入類事件&#xff08;用戶交互&#xff09;? 2. 組件狀態類…

警惕C#版本差異多線程中的foreach陷阱

警惕C#版本差異多線程中的foreach陷阱? 同樣的代碼,不同的結果閉包捕獲的“時間差”問題繞過閉包陷阱的三種方法Lambda立即捕獲(代碼簡潔)顯式傳遞參數(兼容性最佳)使用Parallel.ForEach(官方推薦)注意事項:版本兼容性指南警惕多線程中的foreach陷阱:C#版本差異引發的…

mac u盤重裝mac10.15Catalina系統

我的電腦提mac2017的air 重裝過程 (文件夾中間有空格時為 Install\ macOS\ Catalina 才行) &#xff08;有需要的&#xff0c;最好做一下備份&#xff0c;有些東西可以及時找到配置和文件之類的&#xff0c; u盤制作是在mac電腦上操作的) 一、先下載系統鏡像文件或自行到官方…

說說es配置項的動態靜態之分和集群配置更新API

這天因為某件工作來到了es官網某個參數配置相關的頁面&#xff0c;注意到了下圖圓圈里的“Dynamic”&#xff1a; 鏈接&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/8.1/modules-cluster.html#misc-cluster-settings 顯然這是對配置項的一個描述&am…

2025軟考【系統架構設計師】:兩周極限沖刺攻略(附知識點解析+答題技巧)

距離2025上半年“系統架構設計師”考試已經只剩最后兩周了&#xff0c;還沒有準備好的小伙伴趕緊行動起來。為了幫助大家更好的沖刺學習&#xff0c;特此提供一份考前沖刺攻略。本指南包括考情分析、答題技巧、注意事項三個部分&#xff0c;可以參考此指南進行最后的復習要領&a…