1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          適配器模式

          來源:互聯網轉載 時間:2024-01-29 07:59:25

          一 概述

          定義:適配器模式將某個類的接口轉換成客戶端期望的另一個接口表示,主的目的是兼容性,讓原本因接口不匹配不能一起工作的兩個類可以協同工作。其別名為包裝器(Wrapper)。

          屬于結構型模式

          主要分為三類:類適配器模式、對象的適配器模式、接口的適配器模式。

          本文定義:

          需要被適配的類、接口、對象(我們有的),簡稱 src(source) 最終需要的輸出(我們想要的),簡稱 dst (destination,即Target) 適配器稱之為 Adapter 。

          一句話描述適配器模式的感覺: src->Adapter->dst,即src以某種形式(三種形式分別對應三種適配器模式)給到Adapter里,最終轉化成了dst。

          使用場景:

          1 系統需要使用現有的類,而這些類的接口不符合系統的需要。 2 想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。 3 需要一個統一的輸出接口,而輸入端的類型不可預知。

          二 類適配器模式

          一句話描述:Adapter類,通過繼承 src類,實現 dst 類接口,完成src->dst的適配。 我們通過一個最常用的例子來說明 生活中最常見的就是充電器,220V的交流電被轉換成5V的直流電,充電器在其中就擔當了適配器的功能

          既然我們是進行適配,那就說明是基于某一個功能點的實現,所以我們先定義一個輸出220v交流電的功能,這個功能如下

              /// <summary>    /// 220V電壓    /// </summary>    public class Voltage220    {        public int output220v()        {            int src = 220;            console.writeline("我是" + src + "伏電壓");            return src;        }    }  

          定義一個接口,接口的方法簽名是轉換(220V-5V)

              /// <summary>    /// 客戶需要的5V電壓接口    /// </summary>    public interface Voltage5    {        /// <summary>        /// 輸出5V        /// </summary>        /// <returns></returns>        int output5v();    }

          接下去我們開始定義適配器類 !!!注意點 1、繼承后來的類 2、實現適配器接口

              /// <summary>    /// 類適配器    /// </summary>    public class VoltageAdapter : Voltage220, Voltage5    {        public int output5v()        {            int src = new Voltage220().output220v();            Console.WriteLine("適配器工作開始適配電壓");            int dst = src / 44;            Console.WriteLine("適配完成后輸出電壓:" + dst);            return dst;        }    }

          此時我們需要一個設備,使用適配器查看功能是否正確 定義一個手機類,實現轉換功能 Mobile.charging(適配器 box1) 實例化手機,調用充電方法,形參是適配器的實例

            /// <summary>    /// 手機類    /// </summary>    public class Mobile    {        /// <summary>        /// 充電方法        /// </summary>        /// <param name="voltage5"></param>        public void charging(Voltage5 voltage5)        {            if (voltage5.output5v() == 5)            {                Console.WriteLine("電壓剛剛好5V,開始充電");            }            else if (voltage5.output5v() > 5)            {                Console.WriteLine("電壓超過5V,都閃開 我要變成note7了");            }        }    }

          功能實現

                  /// <summary>        /// 類適配器        /// </summary>        public static void ClassStart()        {            Console.WriteLine("===============類適配器==============");            Mobile mobile = new Mobile();            mobile.charging(new VoltageAdapter());        }

          三 對象適配器

          基本思路和類的適配器模式相同,只是將Adapter類作修改,這次不繼承src類,而是持有src類的實例,以解決兼容性的問題。 即:持有 src類,實現 dst 類接口,完成src->dst的適配。 (根據“合成復用原則”,在系統中盡量使用關聯關系來替代繼承關系,因此大部分結構型模式都是對象結構型模式。)

              /// <summary>    /// 對象適配器    /// </summary>    public class VoltageAdapter2 : Voltage5    {        private Voltage220 voltage220;        public VoltageAdapter2(Voltage220 voltage220)        {            this.voltage220 = voltage220;        }        public int output5v()        {            int dst = 0;            if (null != voltage220)            {                int src = voltage220.output220v();                Console.WriteLine("對象適配器工作,開始適配電壓");                dst = src / 44;                Console.WriteLine("適配完成后輸出電壓:" + dst);            }            return dst;        }    }

          功能實現

                /// <summary>        /// 對象適配器        /// </summary>        public static void ObjectStart()        {            Console.WriteLine("===============對象適配器==============");            VoltageAdapter2 voltageAdapter2=new VoltageAdapter2(new Voltage220());            Mobile mobile = new Mobile();            mobile.charging(voltageAdapter2);        }

          小結:

          對象適配器和類適配器其實算是同一種思想,只不過實現方式不同。 根據合成復用原則,組合大于繼承, 所以它解決了類適配器必須繼承src的局限性問題,也不再強求dst必須是接口。 同樣的它使用成本更低,更靈活

          標簽:adapter模式-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          木門的十大品牌?1 .蒙田木門蒙恬木門成立于1989年,是木門行業的領導品牌。;的木門行業。它生產的各種木材質量優良,深受許多消費者的喜愛。2.塔塔木門塔塔門業成立于1999年,隸屬于北京億泰同創實業有限公司旗下品牌。amp這是一個最早從事研發的企業之一。amp在研發和生產室內門,具有卓越的品質和巨大的市場競爭力。3.展志天華木門展志天華是一家專注木業26年的大型家居建材企業。作為航天部門的合作伙...

          李晨陽燕石年齡多大?1969年沈陽李晨陽出生45歲,閻石頭1962年出生50歲,那就和歌詞說再見吧?歌詞如下:隨著時間的流逝,我們終于分開了。沒有港口。這是永恒的停留。在我的腦海里,有一個鳳凰花的十字路口,有我最珍愛的朋友?;ㄩ_花落了好幾次,有時快樂,有時孤獨。我很高興我的生命在某個時刻一起度過,所以說再見,隨著時間的流逝,我們終于分開了。沒有永遠停留的港口。在我的腦海里,有一個鳳凰花的十字路口,...

          北京到武漢高鐵多少公里?高鐵約1229公里。從北京到西部的武漢站,大概1229公里,一共24趟車。4小時17分至5小時44分,二等座票價520.5元。Z/T/K一等列車,北京西至漢口/武昌站,約1225公里,共20列。至少需要10小時29分鐘,硬座票價152.5元,硬臥票價261.5元。今年有望提速至350 km/h,將更加方便快捷。北京到武漢高鐵多少公里?北京至武漢高鐵列車32列,列車里程約12...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>