門面模式與適配器模式

一、門面模式

門面模式:提供統一接口訪問子系統接口

1、包含角色
外觀系統對外的統一接口
子系統類的集合;并不知道外觀角色的存在,需要為了配合外觀角色而做特殊處理或修改
2、舉例

?????? ?原本開關燈要分別操作各個房間的燈,現在設置總開關更方便。在代碼中定義Light接口規定開關燈方法,DiningLight、HallLight、LivingRoomLight類實現該接口,各自實現開關燈具體操作。LightFacade類作為總開關一樣的外觀類,持有這三種燈的實例,用lightOn()和lightOff()方法就能一鍵統一控制所有燈的開關。

3、優點
  • 減少系統依賴,降低客戶端和子系統耦合;
  • 提高靈活性,簡化客戶端使用;
  • 可靈活設定訪問權限,提高安全性
二、適配器模式

????????適配器模式就是將一個類的接口轉換成客戶期望的另一個接口,使原本接口不兼容的類能協作,簡單來說就是包裝目標類使之適配調用方使用。

三、二者區別

門面模式是為子系統提供一個統一的高層接口,隱藏子系統的復雜性,讓子系統更易于使用,就像設置總開關統一開關各個房間的燈

在SLF4J中的體現:SLF4J定義統一日志API,如info()等,調用者只需用這些API,而無需了解底層Log4j、Logback等,隱藏了日志框架的復雜性,類似門面為子系統提供簡單接口

適配器模式主要用于將不兼容的接口轉化為可兼容的接口,使原本無法一起工作的類能夠協作工作,就像電源適配器將不同插頭適配到插座上

在SLF4J中的體現:SLF4J需適配不同日志框架,將自身API調用轉為對應框架能理解的應用,像適配器轉換接口讓不同對象協同工作,不過適配較隱蔽

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

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

相關文章

SpringBoot Actuator指標收集:Micrometer與Prometheus集成

文章目錄 引言一、Spring Boot Actuator基礎二、Micrometer簡介與集成三、基本指標收集與配置四、自定義業務指標實現五、與Prometheus集成六、實戰案例:API性能監控總結 引言 在現代微服務架構中,監控應用程序的健康狀況和性能指標變得至關重要。Sprin…

【Android面試八股文】Android應用進程的啟動流程【二】

應用進程 1.1 Android系統進程的啟動過程: 1、init進程fork出Zygote進程后,Zygote進程會創建一個服務端socket,等待AMS發起socket請求。 同時,由Zygote進程fork出的SystemServer進程會啟動各項系統服務,其中就包含了A…

基于Django的AI客服租車分析系統

基于Django的AI客服租車分析系統 【包含內容】 【一】項目提供完整源代碼及詳細注釋 【二】系統設計思路與實現說明 【三】AI智能客服與用戶交互指導手冊 【技術棧】 ①:系統環境:Python 3.8,Django 4.2框架 ②:開發環境&a…

全同態加密醫療數據分析集python實現

目錄 摘要一、前言二、全同態加密與醫療數據分析概述2.1 全同態加密(FHE)簡介2.2 醫療數據分析需求三、數據生成與預處理四、系統架構與流程4.1 系統架構圖五、核心數學公式六、異步任務調度與(可選)GPU 加速七、PyQt6 GUI 設計八、完整代碼實現九、自查測試與總結十、展望…

linux 搭建 dvwa 滲透測試環境

linux 安裝 dvwa 1、分為4個部分,搭建dvwa滲透測試環境2、安裝centos 7.63、安裝apache http server4、安裝mysql5、安裝php6、運行dvwa 1、分為4個部分,搭建dvwa滲透測試環境 本文基于centos 7.6 搭建 dvwa 滲透測試環境 安裝一個linux系統安裝apache…

stm32(gpio的四種輸出)

其實GPIO這個片上外設的功能: 用于控制IO引腳。 CPU就如同大腦,而這些片上外設就如同四肢一樣的關系 如圖 —————————————————————————————— OK類比了以上 其實GPIO是有 八種工作模式的 這八種工作模式 因為GPIO是面向IO…

Flask(3): 在Linux系統上部署項目

1 前言 說實話,我并不想接觸linux系統,要記住太多的命令。我更習慣windows系統,鼠標點點,只要記住少量的命令就可以了。 但是我選擇了python,就注定無法逃避linux系統。雖然python也能在windows上很好的運行&#xff0…

WIN10重啟開機不用登錄,直接進入桌面

我們個人機不需要登錄。 步驟1 置,帳戶,登錄選項,密碼。 輸入當前密碼后,直接下一步。 再次重啟,就會發現不需要密碼了。

idea中導入從GitHub上克隆下來的springboot項目解決找不到主類的問題

第一步:刪除目錄下的.idea和target,然后用idea打開 第二步:如果有需要,idea更換jdk版本 原文鏈接:https://blog.csdn.net/m0_74036731/article/details/146779040 解決方法(idea中解決)&#…

數字友好戰略視域下數字安全核心要素的理論解構與實踐路徑

本論文聚焦數字友好戰略框架下的數字安全核心要素,系統闡述數字安全的理論內涵、戰略價值與實踐路徑。通過多維度分析數字安全在個人、企業與國家層面的作用機制,結合國際法規標準與前沿技術實踐,揭示數字安全對構建可持續數字生態的關鍵支撐…

管理與維護samba服務器

允許 Linux、Unix 系統與 Windows 系統之間進行文件和打印機共享,使得不同操作系統的用戶能夠方便地訪問和共享資源,就像在同一局域網中的 Windows 計算機之間共享資源一樣。 server01安裝Samba服務器 [rootserver ~]# rpm -qa | grep samba [rootserver…

前端面試每日三題 - Day 8

這是我為準備前端/全棧開發工程師面試整理的第八天每日三題練習,涵蓋 JavaScript 閉包與執行上下文、React 性能優化與虛擬 DOM、以及高可用消息隊列架構設計。 ? 題目 1:深入理解 JavaScript 中的閉包與執行上下文 📘 解析: 閉…

996引擎-拓展變量:物品變量

996引擎-拓展變量:物品變量 測試代碼參考資料對于Lua來說,只有能保存數據庫的變量才有意義。 至于臨時變量,不像TXT那么束手束腳,通常使用Lua變量就能完成。 測試代碼 -- 存:物品拓展strfunction (player)local where =

現代Web應用中的高級模糊搜索實現:多條件組合查詢與性能優化

搜索功能是現代Web應用中提升用戶體驗的核心組件。本文將深入探討如何實現一個高效、靈活的前端模糊搜索解決方案,支持多條件組合查詢、精確匹配、模糊匹配以及時間范圍篩選。 需求分析與設計目標 核心需求場景 多字段模糊搜索:支持在多個字段中同時搜…

Selenium 實現自動化分頁處理與信息提取

Selenium 實現自動化分頁處理與信息提取 在 Web 自動化測試或數據抓取場景中,分頁處理是一個常見的需求。通過 Selenium,我們可以實現對多頁面內容的自動遍歷,并從中提取所需的信息。本文將詳細介紹如何利用 Selenium 進行自動化分頁處理和信…

VS qt 聯合開發環境下的多國語言翻譯

添加Linguist 文件方法,如同添加類文件的方式,那樣: 其他跟QT的一樣的流程,另外在main函數里要注冊一下, QTextCodec::setCodecForLocale(textCodec); QTranslator translator5; QString trans5 fi…

第十七節:高頻開放題-React未來發展趨勢

服務端組件(RSC)普及 React Compiler對開發模式的影響 React 未來發展趨勢深度解析:服務端組件與編譯器的革命性變革 一、服務端組件(RSC)的全面普及與生態重構 1. RSC 的核心理念與技術優勢 React Server Component…

Python爬蟲實戰:獲取B站查詢數據

一、引言 1.1 研究背景 隨著互聯網的迅猛發展,視頻分享平臺積累了海量的數據資源。以 B 站為例,其豐富的視頻內容和活躍的用戶群體蘊含著巨大的價值。對 B 站搜索數據進行爬取和分析,有助于洞察用戶興趣、市場趨勢以及內容創作方向,為市場調研、用戶行為分析和內容推薦系…

【Rust 精進之路之第3篇-變量觀】`let`, `mut` 與 Shadowing:理解 Rust 的變量綁定哲學

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025-04-20 引言:為數據命名,Rust 的第一道“安全閥” 在上一篇文章中,我們成功搭建了 Rust 開發環境&#xff0c…

stm32(IO口的最高速度)

如果我們寫入速度 快到一種程度 肯定就不能完全按理想的來了 當我們寫01快起來 中間的保持時間就會越來越少 就逐漸往下面變化 所以其實 我們如果改變上升時間 和 下降時間 還是能將最后的波形 變成為正常的波形的。 不用追求高速 ,滿足要求下 選低速的即可。 因…