国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java 設計模式】結構型之適配器模式

這篇具有很好參考價值的文章主要介紹了【Java 設計模式】結構型之適配器模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

適配器模式(Adapter Pattern)是一種結構型設計模式,用于將一個類的接口轉換成客戶端期望的另一個接口。這種模式使得原本由于接口不兼容而不能一起工作的類可以一起工作。在本文中,我們將介紹 Java 中適配器模式的定義、結構、使用場景以及如何在實際開發(fā)中應用。

1. 定義

適配器模式是一種結構型設計模式,它允許一個接口轉換成另一個接口。它允許原本由于接口不兼容而不能一起工作的類可以一起工作。適配器模式通常包含三個主要角色:目標接口(Target)、被適配者(Adaptee)、適配器(Adapter)。

【Java 設計模式】結構型之適配器模式,設計模式,java,設計模式,適配器模式

  • 目標接口(Target): 客戶端期望的接口,適配器將被適配者適配成這個接口
  • 被適配者(Adaptee): 需要被適配的類或接口,它與目標接口不兼容
  • 適配器(Adapter): 通過實現(xiàn)目標接口并包裝被適配者,使得被適配者的接口能夠被客戶端調用

2. 應用場景

適配器模式通常在以下場景中使用:

  • 已有類的接口不符合客戶端的需求:

    當一個已有類的接口與客戶端的需求不匹配時,可以使用適配器模式將已有類的接口適配成客戶端期望的接口

  • 需要復用多個現(xiàn)有子類的情況:

    如果需要復用一個或多個已有類的子類,但是這些子類的接口不符合需要,可以通過適配器模式適配這些子類

  • 不希望修改已有類的情況:

    如果不希望修改已有類的代碼,但是需要使其與其他類或接口協(xié)同工作,可以使用適配器模式

3. 代碼實現(xiàn)

下面通過一個簡單的例子來演示適配器模式的實現(xiàn)。假設有一個多語言說話器(Speaker)接口,但是目前只支持說中文?,F(xiàn)在需要在該多語言說話器中集成說外國話,如 英語。這時就可以使用適配器模式。

目標接口 Speaker

package com.cheney.demo;

public interface Speaker {
    void speak(String country, String something);
}

被適配者接口 AdvancedSpeaker

package com.cheney.demo;

public interface AdvancedSpeaker {
    void speakChinese(String something);

    void speakEnglish(String something);
}

具體的被適配者類 ChineseSpeaker

package com.cheney.demo;

public class ChineseSpeaker implements AdvancedSpeaker{

    @Override
    public void speakChinese(String something) {
        System.out.println("[中文] " + something);
    }

    @Override
    public void speakEnglish(String something) {

    }
}

具體的被適配者類 EnglishSpeaker

package com.cheney.demo;

public class EnglishSpeaker implements AdvancedSpeaker{

    @Override
    public void speakChinese(String something) {

    }

    @Override
    public void speakEnglish(String something) {
        System.out.println("[英文] " + something);
    }
}

適配器類 SpeakerAdapter

package com.cheney.demo;

public class SpeakerAdapter implements Speaker{

    private final AdvancedSpeaker advancedSpeaker;

    public SpeakerAdapter(String country) {
        if (country.equalsIgnoreCase("chinese")) {
            advancedSpeaker = new ChineseSpeaker();
        } else {
            advancedSpeaker = new EnglishSpeaker();
        }
    }

    @Override
    public void speak(String country, String something) {
        if (country.equalsIgnoreCase("chinese")) {
            advancedSpeaker.speakChinese(something);
        } else {
            advancedSpeaker.speakEnglish(something);
        }
    }
}

目標類 PeopleSpeaker

package com.cheney.demo;

public class PeopleSpeaker implements Speaker {
    @Override
    public void speak(String country, String something) {
        // 說中文
        if (country.equalsIgnoreCase("chinese")) {
            System.out.println(something);
        } else {
            // 使用適配器說外語
            SpeakerAdapter speakerAdapter = new SpeakerAdapter(something);
            speakerAdapter.speak(country, something);
        }
    }
}

客戶端啟動類

package com.cheney.demo;

public class Main {
    public static void main(String[] args) {
        Speaker speaker = new PeopleSpeaker();

        speaker.speak("chinese", "你好!");
        speaker.speak("english", "Hello!");
    }
}

執(zhí)行結果:

【Java 設計模式】結構型之適配器模式,設計模式,java,設計模式,適配器模式

在上述例子中,Speaker 是目標接口,AdvancedSpeaker 是被適配者接口。ChineseSpeakerEnglishSpeaker 是具體的被適配者類。SpeakerAdapter 是適配器類,通過實現(xiàn)目標接口并包裝不兼容的被適配者接口,使得客戶端可以通過適配器調用被適配者的功能。PeopleSpeaker 是具體的目標類,負責說話,當說其他國家語言時,通過適配器調用說相應國家的話。

通過適配器模式,我們實現(xiàn)了談話時對其他國家語言的兼容,而不需要修改原有的說話接口和被適配者類。這使得系統(tǒng)更加靈活,能夠方便地擴展和添加新的語言的支持。

結語

適配器模式是一種在面對不同接口的系統(tǒng)集成中非常有用的設計模式。通過適配器,可以使原本不兼容的接口能夠協(xié)同工作,提高了系統(tǒng)的靈活性和可維護性。在實際開發(fā)中,適配器模式常被用于集成第三方庫、系統(tǒng)升級和接口兼容等場景。


【Java 設計模式】系列 《23 種設計模式》 與 《7 大設計原則》 總綱
??設計原則
?單一職責原則(SRP) 規(guī)定一個類應該只有一個引起變化的原因
?開放/封閉原則(OCP) 表明軟件實體應該是可以擴展的,但是不可修改的
?里氏替換原則(LSP) 強調派生類必須能夠替代其基類而不引起程序錯誤
?依賴倒置原則(DIP) 倡導高層模塊不應該依賴于低層模塊,二者都應該依賴于抽象
?接口隔離原則(ISP) 提倡一個類不應該被強迫依賴它不使用的接口
?合成/聚合復用原則(CARP) 建議盡量使用合成/聚合,盡量不要使用繼承
?迪米特法則(LoD) 規(guī)定一個對象應該對其他對象有最少的了解

??創(chuàng)建型設計模式
?單例模式 保證一個類僅有一個實例,并提供一個訪問它的全局點
?工廠方法模式 定義一個用于創(chuàng)建對象的接口,但是由子類決定實例化哪一個類
?抽象工廠模式 提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需指定它們具體的類
?建造者模式 將一個復雜對象的構建與其表示分離,使得同樣的構建過程可以創(chuàng)建不同的表示
?原型模式 通過復制現(xiàn)有的對象來創(chuàng)建新對象,而不是從頭開始創(chuàng)建

??結構型設計模式
?適配器模式 將一個類的接口轉換成客戶希望的另外一個接口
?橋接模式 將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化
?組合模式 將對象以樹形結構組合以表示“部分-整體”的層次結構
?裝飾器模式 動態(tài)地給一個對象添加一些額外的職責
?外觀模式 為子系統(tǒng)中的一組接口提供一個一致的界面
?代理模式 為其他對象提供一種代理以控制對這個對象的訪問
?享元模式 用共享的方式高效地支持大量小粒度對象

??行為型設計模式
?觀察者模式 定義對象間的一對多依賴,當一個對象改變狀態(tài),所有依賴者都會受到通知并自動更新
?策略模式 定義一系列算法,將它們封裝起來,并且使它們可以相互替換
?命令模式 將請求封裝成對象,使得可以用不同的請求對客戶進行參數(shù)化
?狀態(tài)模式 允許對象在其內部狀態(tài)改變時改變它的行為
?責任鏈模式 為解除請求的發(fā)送者和接收者之間的耦合,而使多個對象都有機會處理這個請求
?訪問者模式 將算法與對象結構分離,并且可以在不改變對象結構的前提下定義新的操作
?中介者模式 用一個中介對象來封裝一系列的對象交互
?備忘錄模式 在不破壞封裝的情況下,捕獲對象的內部狀態(tài),并在對象之外保存這個狀態(tài)
?迭代器模式 提供一種方法順序訪問一個聚合對象中的各個元素,而不暴露其內部表示
?模版方法模式 定義一個操作中的算法的骨架,將一些步驟延遲到子類中
?解釋器模式 定義一個語言的文法,并且建立一個解釋器來解釋該語言中的句子

文章來源地址http://www.zghlxwxcb.cn/news/detail-805126.html

到了這里,關于【Java 設計模式】結構型之適配器模式的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【地鐵上的設計模式】--結構型模式:適配器模式

    前面幾篇文章我們學習了創(chuàng)建型模式,從本篇文章開始,我們將學習結構型模式。 什么是結構型模式 結構型模式是一種設計模式,它描述了如何將類或對象結合在一起形成更大的結構,以提供新的功能或實現(xiàn)更復雜的行為。結構型模式包括以下幾種: 適配器模式(Adapter P

    2024年02月02日
    瀏覽(33)
  • 設計模式-04.01-結構型-代理&橋接&裝飾器&適配器

    設計模式-04.01-結構型-代理&橋接&裝飾器&適配器

    創(chuàng)建型模式比較好理解,后面的結構型和行為型設計模式不是那么好理解。如果遇到不好理解的設計模式,我一般會在開頭舉比較簡單的Demo案例來幫助理解。 前面幾節(jié),我們講了設計模式中的創(chuàng)建型模式。創(chuàng)建型模式主要解決對象的創(chuàng)建問題,封裝復雜的創(chuàng)建過程,解耦對

    2024年02月09日
    瀏覽(24)
  • 【Java 設計模式】結構型之外觀模式

    外觀模式(Facade Pattern)是一種結構型設計模式, 它為復雜系統(tǒng)提供了一個簡化的接口,隱藏了系統(tǒng)的復雜性,使得客戶端更容易使用系統(tǒng) 。外觀模式通過創(chuàng)建一個包裝類(外觀類),將系統(tǒng)的復雜性封裝起來,對客戶端提供一個簡單的接口。在本文中,我們將深入研究Ja

    2024年01月21日
    瀏覽(25)
  • Java學習——設計模式——結構型模式2

    Java學習——設計模式——結構型模式2

    結構型模式主要涉及如何組合各種對象以便獲得更好、更靈活的結構。雖然面向對象的繼承機制提供了最基本的子類擴展父類的功能,但結構型模式不僅僅簡單地使用繼承,而更多地通過組合與運行期的動態(tài)組合來實現(xiàn)更靈活的功能。 包括: 1、適配器 2、橋接 3、組合 4、裝

    2024年02月03日
    瀏覽(27)
  • 【Java 設計模式】結構型之代理模式

    代理模式(Proxy Pattern)是一種結構型設計模式, 它允許通過一個代理對象控制對其他對象的訪問 。代理模式在訪問對象時引入了一定程度的間接性,使得可以在訪問對象前后進行一些額外的操作。在本文中,我們將深入研究Java中代理模式的定義、結構、使用場景以及如何在

    2024年01月21日
    瀏覽(23)
  • 【Java 設計模式】結構型之橋接模式

    【Java 設計模式】結構型之橋接模式

    橋接模式(Bridge Pattern)是一種結構型設計模式, 它將抽象部分與實現(xiàn)部分分離,使它們可以獨立變化,從而降低它們之間的耦合 。橋接模式通過將抽象部分和實現(xiàn)部分分離,使得它們可以獨立地變化,同時在它們之間建立一個橋梁。在本文中,我們將介紹 Java 中橋接模式的

    2024年01月19日
    瀏覽(21)
  • 【十】設計模式~~~結構型模式~~~享元模式(Java)

    【十】設計模式~~~結構型模式~~~享元模式(Java)

    【學習難度:★★★★☆,使用頻率:★☆☆☆☆】 ????????面向對象技術可以很好地解決一些靈活性或可擴展性問題,但在很多情況下需要在系統(tǒng)中增加類和對象的個數(shù)。當對象數(shù)量太多時,將導致運行代價過高,帶來性能下降等問題。 享元模式正是為解決這一類問題

    2024年02月08日
    瀏覽(25)
  • Java23種設計模式-結構型模式之組合模式

    組合模式 (Composite Pattern):將 對象組合成樹狀結構 以表示“ 部分-整體 ”層次結構,同時保持對單個對象和組合對象的一致性操作,主要目的是簡化客戶端代碼,因為它可以統(tǒng)一處理單個對象和組合對象。 通常包含以下幾個角色: 角色1. 抽象組件 (Component):聲明了 組

    2024年04月26日
    瀏覽(28)
  • 【Java 設計模式】結構型之享元模式

    享元模式(Flyweight Pattern)是一種結構型設計模式,它旨在減少對象的數(shù)量以節(jié)省內存和提高性能。享元模式通過共享大量相似對象的狀態(tài),使得這些對象可以共享,而不需要在每個對象中都存儲相同的數(shù)據(jù)。在本文中,我們將深入研究Java中享元模式的定義、結構、使用場景

    2024年01月22日
    瀏覽(29)
  • Java設計模式之結構型-橋接模式(UML類圖+案例分析)

    Java設計模式之結構型-橋接模式(UML類圖+案例分析)

    目錄 一、基礎概念 二、UML類圖 三、角色設計 四、案例分析 4.1、支付方式 4.2、支付渠道? 五、總結 橋接模式(Bridge Pattern)是一種結構型設計模式,其主要目的是“將抽象部分與實現(xiàn)部分分離,使它們都可以獨立地變化”。 橋接模式的核心思想是把抽象(abstraction)與實現(xiàn)

    2024年02月13日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包