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

【23種設(shè)計模式】適配器模式(六)

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

前言

從今天開始我們開始講【結(jié)構(gòu)型】設(shè)計模式,【結(jié)構(gòu)型】設(shè)計模式有如下幾種:適配器模式、橋接模式、組合模式、裝飾模式、外觀模式、享元模式、代理模式?!緞?chuàng)建型】的設(shè)計模式解決的是對象創(chuàng)建的問題,那【結(jié)構(gòu)型】設(shè)計模式解決的是類和對象的組合關(guān)系的問題。

今天我們就開始講【結(jié)構(gòu)型】設(shè)計模式里面的第一個設(shè)計模式,中文名稱:適配器模式,英文名稱:Adapter Pattern。說起這個模式其實很簡單,在現(xiàn)實生活中也有很多實例,比如:我們手機的充電器,充電器的接頭,有的是把兩相電轉(zhuǎn)換為三相電的,當(dāng)然也有把三相電轉(zhuǎn)換成兩相電的。我們經(jīng)常使用筆記本電腦,筆記本電腦的工作電壓和我們家里照明電壓是不一致的,當(dāng)然也就需要充電器把照明電壓轉(zhuǎn)換成筆記本的工作電壓,只有這樣筆記本電腦才可以正常工作。我們只要記住一點,適配就是轉(zhuǎn)換,把不能在一起工作的兩樣?xùn)|西通過轉(zhuǎn)換,讓他們可以在一起工作。Adapter模式主要應(yīng)用于“希望復(fù)用一些現(xiàn)存的類,但是接口又與復(fù)用環(huán)境要求不一致的情況”,在遺留代碼復(fù)用、類庫遷移等方面非常有用。

適配器模式的定義

在軟件系統(tǒng)中,由于應(yīng)用環(huán)境的變化,常常需要將“一些現(xiàn)存的對象”放在新的環(huán)境中應(yīng)用,但是新環(huán)境要求的接口是這些現(xiàn)存對象所不滿足的。如何應(yīng)對這種“遷移的變化”?如何既能利用現(xiàn)有對象的良好實現(xiàn),同時又能滿足新的應(yīng)用環(huán)境所要求的接口?將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

適配器模式的組成

【23種設(shè)計模式】適配器模式(六)

  • 目標(biāo)角色(Target):定義Client使用的與特定領(lǐng)域相關(guān)的接口。
  • 客戶角色(Client):與符合Target接口的對象協(xié)同。
  • 被適配角色(Adaptee):定義一個已經(jīng)存在并已經(jīng)使用的接口,這個接口需要適配。
  • 適配器角色(Adapter)適配器模式的核心。它將對被適配Adaptee角色已有的接口轉(zhuǎn)換為目標(biāo)角色Target匹配的接口。對Adaptee的接口與Target接口進行適配.。

適配器模式的實現(xiàn)

由于適配器模式有兩種實現(xiàn)結(jié)構(gòu),對象適配器類適配器,分別進行實現(xiàn):

對象適配器實現(xiàn)

兩插腳

 /// <summary>
    /// 我家只有2個孔的插座,也就是適配器模式中的目標(biāo)(Target)角色,這里可以寫成抽象類或者接口
    /// </summary>
    public class TwoHoleTarget
    {
        // 客戶端需要的方法
        public virtual void Request()
        {
            Console.WriteLine("我是2個孔的插頭....");
        }
    }

三插腳

/// <summary>
    /// 筆記本電源適配器是有3個柱子的插頭,源角色——需要適配的類(Adaptee)
    /// </summary>
    public class ThreeHoleAdaptee
    {
        public void SpecificRequest()
        {
            Console.WriteLine("我是3個孔的插頭....");
        }
    }

適配器

/// <summary>
    /// 適配器類,TwoHole這個對象寫成接口或者抽象類更好,面向接口編程嘛
    /// </summary>
    public class ThreeToTwoAdapter : TwoHoleTarget
    {
        // 引用兩個孔插頭的實例,從而將客戶端與TwoHole聯(lián)系起來
        private ThreeHoleAdaptee threeHoleAdaptee = new ThreeHoleAdaptee();

        //TODO:這里可以繼續(xù)增加適配的對象

        /// <summary>
        /// 實現(xiàn)2個孔插頭接口方法
        /// </summary>
        public override void Request()
        {
            //可以做具體的轉(zhuǎn)換工作
            threeHoleAdaptee.SpecificRequest();
        }
    }

調(diào)用

		 /// <summary>
        /// 家里只有兩個孔的插座,也懶得買插線板了,還要花錢,
        /// 但是筆記本的電源適配器是一個有3個小柱子的插頭,明顯直接搞不定,那就適配吧
        ///</summary>
        /// </summary>
        public void RunTest()
        {
            //現(xiàn)在就可以使用三插給筆記本充電了
            TwoHoleTarget homeTwoHole = new ThreeToTwoAdapter();
            homeTwoHole.Request();
        }

【23種設(shè)計模式】適配器模式(六)

類適配器實現(xiàn)

兩插腳

  /// <summary>
    /// 我家只有2個孔的插座,也就是適配器模式中的目標(biāo)角色(Target),這里只能是接口,也是類適配器的限制
    /// </summary>
    public interface ITwoHoleTarget
    {
        void Request();
    }

三插腳

  /// <summary>
    /// 3個孔的插頭,源角色——需要適配的類(Adaptee)
    /// </summary>
    public abstract class ThreeHoleAdaptee2
    {
        public void SpecificRequest2()
        {
            Console.WriteLine("我是3個孔的插頭。。。。");
        }
    }

適配器

  /// <summary>
    /// 適配器類,接口要放在類的后面,在此無法適配更多的對象,這是類適配器的不足
    /// </summary>
    public class ThreeToTwoAdapter2 : ThreeHoleAdaptee2, ITwoHoleTarget
    {
        /// <summary>
        /// 實現(xiàn)2個孔插頭接口方法
        /// </summary>
        public void Request()
        {
            // 調(diào)用3個孔插頭方法
            this.SpecificRequest2();
        }
    }

調(diào)用

  public void RunTest()
        {
            ITwoHoleTarget change = new ThreeToTwoAdapter2();
            change.Request();
        }

【23種設(shè)計模式】適配器模式(六)

適配器模式優(yōu)缺點

適配器模式用來解決現(xiàn)有對象與客戶端期待接口不一致的問題,下面詳細(xì)總結(jié)下兩種適配器形式的優(yōu)缺點

類的適配器模式:

優(yōu)點:
  • 可以在不修改原有代碼的基礎(chǔ)上來復(fù)用現(xiàn)有類,很好地符合 “開閉原則”。

  • 可以重新定義Adaptee(被適配的類)的部分行為,因為在類適配器模式中,Adapter是Adaptee的子類。

  • 僅僅引入一個對象,并不需要額外的字段來引用Adaptee實例(這個即是優(yōu)點也是缺點)。

缺點:
  • 用一個具體的Adapter類對Adaptee和Target進行匹配,當(dāng)如果想要匹配一個類以及所有它的子類時,類的適配器模式就不能勝任了。因為類的適配器模式中沒有引入Adaptee的實例,光調(diào)用this.SpecificRequest方法并不能去調(diào)用它對應(yīng)子類的SpecificRequest方法。

  • 采用了 “多繼承”的實現(xiàn)方式,帶來了不良的高耦合。

對象的適配器模式:

優(yōu)點:
  • 可以在不修改原有代碼的基礎(chǔ)上來復(fù)用現(xiàn)有類,很好地符合 “開閉原則”(這點是兩種實現(xiàn)方式都具有的)

  • 采用 “對象組合”的方式,更符合松耦合。文章來源地址http://www.zghlxwxcb.cn/news/detail-687428.html

缺點:
  • 使得重定義Adaptee的行為較困難,這就需要生成Adaptee的子類并且使得Adapter引用這個子類而不是引用Adaptee本身。

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

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【設(shè)計模式】適配器模式

    【設(shè)計模式】適配器模式

    適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個獨立接口的功能。 這種模式涉及到一個單一的類,該類負(fù)責(zé)加入獨立的或不兼容的接口功能。舉個真實的例子,讀卡器是作為內(nèi)存卡和筆記本之間的適配器。

    2024年02月12日
    瀏覽(32)
  • 設(shè)計模式--適配器模式

    設(shè)計模式--適配器模式

    目錄 基本介紹 工作原理 類適配模式 介紹 應(yīng)用實例介紹 類適配器模式注意事項和細(xì)節(jié) 對象適配模式 介紹 對象適配器模式注意事項和細(xì)節(jié) 接口適配器模式 介紹 適配器模式的注意事項和細(xì)節(jié) ?(1) 適配器模式(Adapter Pattern) 將某個類的接口轉(zhuǎn)換成客戶端期望的另一個接口表示

    2023年04月26日
    瀏覽(19)
  • 設(shè)計模式 06 適配器模式

    適配器模式(Adapter Pattern)屬于 結(jié)構(gòu)型 模式 結(jié)構(gòu)型 模式關(guān)注如何將現(xiàn)有的類或?qū)ο蠼M織在一起形成更加強大的結(jié)構(gòu)。 在生活中,我們經(jīng)常遇到這樣的一個問題:輕薄筆記本通常只有 type-c 或者 usb-a 接口,沒有網(wǎng)口。但日常使用中是往往需要連接網(wǎng)口上網(wǎng)的,這時想到的第

    2024年02月11日
    瀏覽(19)
  • 設(shè)計模式-- 3.適配器模式

    設(shè)計模式-- 3.適配器模式

    將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 請求者(client):客戶端角色,需要使用適配器的對象,不需要關(guān)心適配器內(nèi)部的實現(xiàn),只對接目標(biāo)角色。 目標(biāo)角色(Target):目標(biāo)角色,和client直接對接,定義

    2024年01月18日
    瀏覽(26)
  • 《設(shè)計模式》之適配器模式

    《設(shè)計模式》之適配器模式

    把一個類的接口轉(zhuǎn)換成客戶端所期待的另一種接口,從而使原接口不匹配而無法再一起工作的兩個類能在一起工作。 在軟件系統(tǒng)中,由于應(yīng)用環(huán)境的變化,常常需要將“一些現(xiàn)存的對象”放在新的環(huán)境中應(yīng)用,但是新環(huán)境要求的接口是這些現(xiàn)存對象所不能滿足的。 如何應(yīng)對

    2024年02月09日
    瀏覽(22)
  • 設(shè)計模式四:適配器模式

    設(shè)計模式四:適配器模式

    1、適配器模式的理解 適配器模式可以理解為有兩個現(xiàn)成的類Adaptee和Target,它們兩個是不能動的,要求必須使用B這個類來實現(xiàn)一個功能,但是A的內(nèi)容是能復(fù)用的,這個時候我們需要編寫一個轉(zhuǎn)換器 適配器模式 Adaptee:被適配者,現(xiàn)有的接口或者類; Adapter:適配器類,適配器

    2024年02月22日
    瀏覽(24)
  • 設(shè)計模式——適配器

    說起適配器,大家第一個想到的可能就是電源適配器。 電源適配器的作用想必同學(xué)們也都清楚,那就是將220伏高電壓轉(zhuǎn)換成想要的5伏至20伏左右穩(wěn)定的低電壓。 從某種程度上講,編程中經(jīng)常提起的適配器模式的原理與上面講到的基本是一致的。 用于將一個類的接口轉(zhuǎn)換成另

    2024年02月12日
    瀏覽(22)
  • 適配器設(shè)計模式

    適配器設(shè)計模式

    一、適配器模式 B站:java架構(gòu)師 定義:適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作 三種適配器:類的適配器模式、對象的適配器模式、接口的適配器模式 1.類適配器模式 實現(xiàn)方式:讓

    2024年02月11日
    瀏覽(22)
  • 【設(shè)計模式】使用適配器模式做補償設(shè)計

    【設(shè)計模式】使用適配器模式做補償設(shè)計

    適配器模式是一種 結(jié)構(gòu)型設(shè)計模式 ,它提供了一個中間層,通過這個中間層,客戶端可以使用統(tǒng)一的接口與具有不同接口的類進行交互,也就是說,將一個接口轉(zhuǎn)換成客戶期望的另一個接口,使得原本不兼容的接口能夠協(xié)同工作。 舉個現(xiàn)實中的例子,我們現(xiàn)在的很多輕薄筆

    2024年02月22日
    瀏覽(25)
  • 【軟考】設(shè)計模式之適配器模式

    【軟考】設(shè)計模式之適配器模式

    1. 說明 1.Adapter(適配器)。 2.將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。 3.Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 4.類適配器使用多重繼承對一個接口與另一個接口進行匹配。 5.對象適配器依賴于對象組合。 6.適配器模式是一種非

    2024年04月22日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包