【設計模式07】適配器

前言

實現目標,組合源,寫個適配方法,適用于沒辦法改變源,但又想實現目標類。我暫時還沒使用到過,但感覺用處還是蠻大的

UML類圖

在這里插入圖片描述

代碼示例

package com.sw.learn.pattern.C_structre.a_adapter;public class Main {// 目標5v,接口表示提供了獲取5v的能力interface FiveVolt {int get5Volt();}// 源(被適配類),繼承表示提供獲取220v的能力static class PowerSource220V {public int get220Volt() {return 220;}}// 源2(被適配類),繼承表示提供獲取110v的能力static class PowerSource110V {public int get110Volt() {return 110;}}// Adapter適配器: 充電器,把 220V 轉為 5Vstatic class VoltageAdapter extends PowerSource220V implements FiveVolt {@Overridepublic int get5Volt() {int original = this.get220Volt();return original / 44; // 簡化模擬變壓過程}}// Adapter適配器: 充電器,把 110V 轉為 5Vstatic class VoltageAdapter2 implements FiveVolt {private PowerSource110V powerSource110V;// 組合代替繼承public VoltageAdapter2() {this.powerSource110V = new PowerSource110V();}@Overridepublic int get5Volt() {int original = powerSource110V.get110Volt();return original / 22; // 簡化模擬變壓過程}}// Client: 手機static class Phone {public void charge(FiveVolt power) {System.out.println("正在使用 " + power.get5Volt() + "V 電壓充電");}}public static void main(String[] args) {Phone phone = new Phone();FiveVolt adapter = new VoltageAdapter();phone.charge(adapter);FiveVolt adapter2 = new VoltageAdapter2();phone.charge(adapter2);}
}

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

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

相關文章

SPI、I2C和UART三種串行通信協議的--------簡單總結

目錄 一、3種協議的對比二、典型應用場景三、選型建議 以下是SPI、I2C和UART三種串行通信協議的對比分析及適用場景總結: 一、3種協議的對比 . 對比其他接口 特性ICSPIUART信號線數量2(SCL SDA)4(SCK MOSI MISO SS/CS&…

VUE admin-element 后臺管理系統三級菜單實現緩存

VUE admin-element 后臺管理系統三級菜單實現緩存 框架無法直接實現三級菜單頁面緩存,原因是由于直接緩存時沒有把上級路由文件名稱緩存進去,所以在框架基礎上參考部分文章進行了一些改造 菜單文件,三級菜單引用文件路徑修改,在…

【筆記】Windows 安裝 Gemini CLI

2025 年 07 月 02 日 Windows 安裝 Gemini CLI google-gemini/gemini-cli:一個開源的 AI 代理,可將 Gemini 的強大功能直接引入您的終端。 一、前置條件 系統要求:Windows 7 及以上版本。 Node.js 環境:Gemini CLI 基于 Node.js …

transformers==4.42.0會有一個BUG

transformers4.42.0版本下,自動安裝模型時出現一個BUG(自動從Hugging Faces上下載)。 2025-07-02 14:07:08,641 - __main__ - ERROR - 模型加載失敗: Failed to import transformers.models.llama.tokenization_llama_fast because of the f…

Spring-解決IDEA中無法創建JDK17一下的SpringBoot項目

目錄 一.直接創建 二.修改Server URL為https://start.aliyun.com 一.直接創建 目前如果使用https://start.spring.io(Spring官方源),已經沒有辦法直接創建JDK17一下的項目了: 如果想要創建JDK8的項目,可以先通…

人工智能-基礎篇-13-基礎應用篇-2~~模型項目開發流程--從0到1創建類似DeepSeek語言模型,應該怎么做?

1、前期準備 1、明確目標與需求分析 應用場景定義:首先需要明確你的模型將用于哪些場景,比如對話系統、文本生成、代碼輔助等。性能指標設定:確定關鍵性能指標(KPI),如準確率、響應時間、支持的語言種類等。 2、組建團隊 機器…

本周滬鋁想法

核心邏輯:低庫存支撐與淡季需求疲軟博弈,宏觀情緒助推高位震蕩 一、成本下移 VS 價格韌性? 成本端與價格表現呈現出不同態勢。成本端方面,氧化鋁現貨價格在本周持續下跌,山東地區均價降至 3090 元 / 噸,環比下降 1.…

【網絡】SSL/TLS介紹

一、SSL/TLS 概述 SSL(Secure Socket Layer) : 最初由網景(Netscape)開發,用于在客戶端和服務器之間建立安全的加密連接,防止數據被竊取或篡改。后來逐步演進,最終被 TLS 取代。 TL…

TLF35584

13、SPI串行外設接口 13.1 介紹 主要功能 SPI 總線是?種以全雙工模式運行的同步串行數據鏈路。TLF35584 在從機模式下進行通信,其中主機(μC)啟動數據幀。TLF35584應該通過專用片選線進行尋址。這允許其他從設備連接到SPI總線。 數據傳輸 開始通信,μ…

word中如何保存高清圖片,并保存為高質量的pdf文件(圖像不失真)

word中如何保存高清圖片 打開word,選擇,選項,高級選項,選擇不壓縮文件中的圖像并保持分辨率高保真 將word保存為高質量的pdf文件 不用另存為或者導出 選擇文件,選擇打印: 選擇中間都打印出pdf即可。 然后再選擇打印…

Day03_C語言IO進程線程

01.思維導圖 02.創建一個進程扇 #include <25051head.h> int main(int argc, const char *argv[]) {pid_t pid;int i;for(i0;i<4;i){pidfork();if(pid0){//printf("子進程:pid[%d]\n",pid);printf("子進程%d:子進程pid[%d],父進程pid[%d]\n",i1,g…

獲取Qwen 2.5 內部網絡結構 講解

獲取Qwen 2.5 內部網絡結構 講解 Qwen2DecoderLayer( (self_attn): Qwen2Attention( (q_proj): Linear(in_features=2048, out_features=2048, bias=True) (k_proj): Linear(in_features=2048, out_features=256, bias=True) (v_proj): Linear(in_features=2048, out_features…

在深度學習中,batch、epoch 和 iteration 的關系

用一個實際例子和簡單代碼來清晰解釋 batch、epoch 和 iteration 的關系&#xff1a; ------------------------------------------------------------------------------------ 假設場景 你有一個數據集&#xff1a;1000 張貓狗圖片 你設置 batch_size 100&#xff08;每次…

RabbitMQ 高級特性之持久性

1. 簡介 在 RabbitMQ 的消息發送流程中&#xff0c;一共有三種消息丟失的情況&#xff1a; 生產者給 broker 發送的消息&#xff0c;broker 沒有收到broker 將消息丟失broker 給消費者發送消息時消息丟失 對于第一種情況&#xff0c;我們可以使用 RabbitMQ 提供的發布確認模…

應急響應靶機-近源OS-1-知攻善防實驗室

前景需要&#xff1a; 小王從某安全大廠被優化掉后&#xff0c;來到了某私立小學當起了計算機老師。某一天上課的時候&#xff0c;發現鼠標在自己動彈&#xff0c;又發現除了某臺電腦&#xff0c;其他電腦連不上網絡。感覺肯定有學生搗亂&#xff0c;于是開啟了應急。 1.攻擊…

Linux 內存管理與緩存機制

文章目錄 內存介紹buff/cache 與匿名頁Swap&#xff08;交換空間&#xff09;&#xff1a;內存的臨時倉庫 內存回收與Swap機制內存頁的兩種類型內核回收決策流程如何解讀內存狀態drop_caches 參數說明 實踐操作查看內存狀態查看Swap狀態釋放 buff/cache 緩存 內存介紹 當使用 …

【嵌入式電機控制#6】編碼器原理與內部構造

一、簡介 編碼器是一種將直線位移和角位移數據轉換為脈沖信號、二進制編碼的設備。常用于測量物體運動的位置、角度或速度。 二、分類 1. 按檢測分類&#xff1a; &#xff08;1&#xff09;光電式編碼器 &#xff08;2&#xff09;磁電式編碼器 2. 編碼類型分類&#xff1a; …

FastAPI 安裝使用教程

一、FastAPI 簡介 FastAPI 是一個現代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;基于 Python 3.7 和標準類型提示構建&#xff0c;廣泛應用于 API 服務開發。它使用 Pydantic 進行數據驗證&#xff0c;集成自動生成 OpenAPI 和文檔 UI&#xff0c;非常適合…

【WPF】WPF(樣式)

Window.Resources 當前窗體作用域資源 TargetType“Button” 使得當前窗體的組件類型都適配此樣式<Window.Resources><Style TargetType"Button"><Setter Property"Background" Value"WhiteSmoke"></Setter><Setter…

Jmeter(六):json斷言元件,jmeter參數化實現

&#x1f345; 點擊文末小卡片 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 json斷言元件 json斷言元件介紹 json斷言元件與響應斷言元件的功能類型&#xff0c;它只針對響應正文為json數據格 式的內容進行斷言功能。 添加路徑&…