您好,歡迎訪問上海意泓電子科技有限責任公司網(wǎng)站!
      4新聞資訊
      您的位置: 首頁 ->  新聞資訊 -> 電源

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

      文章出處:電源 責任編輯:上海意泓電子科技有限責任公司 發(fā)表時間:
      2018
      01-15

      適配器是一個接口轉(zhuǎn)換器,它可以是一個獨立的硬件接口設(shè)備,允許硬件或電子接口與其它硬件或電子接口相連,也可以是信息接口。比如:電源適配器、三角架基座轉(zhuǎn)接部件、USB與串口的轉(zhuǎn)接設(shè)備等。


      一臺實驗室離心機通??梢耘涠鄠€轉(zhuǎn)子,容量大小不一。當在同一臺離心機需要配同一種類但容量不一的兩個轉(zhuǎn)子時,可以考慮在大容量的試管孔里放一個適配器以達到適合小容量試管的試管孔,這樣就只需要配上大容量的轉(zhuǎn)子加上一套適配器就可以滿足要求了,這樣既可以免除換轉(zhuǎn)子時拆卸的復雜工序,又節(jié)約金錢,因為一套適配器的價格遠遠低一個轉(zhuǎn)子的價格。


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


      Java 適配器模式


      適配器模式就是把一個類的接口轉(zhuǎn)換成客戶端所期待的另外一種接口,從而使原接口不匹配而無法在一起工作的的兩個類能在一起工作。從功能上說,這些接口不兼容的類一般具有相同或相似的功能。通常我們通過修改該類的接口來解決這種接口不兼容的情形,但是如果我們不愿意為了一個應用而修改各原接口,或者我們壓根兒就沒有對象的源代碼的時候,適配器模式就會派上用場了。


      適配器的優(yōu)點:


      1、將目標類和適配者類解耦


      2、增加了類的透明性和復用性,將具體的實現(xiàn)封裝在適配者類中,對于客戶端類來說是透明的,而且提高了適配者的復用性


      3、靈活性和擴展性都非常好,符合開閉原則


      適配器所涉及的角色包括下面幾種:


      目標(Target):定義一個客戶端使用的特定接口。


      客戶端(Client):使用目標接口,與和目標接口一致的對象合作。


      被適配者(Adaptee):一個現(xiàn)存需要適配的接口。


      適配器(Adapter):負責將Adaptee的接口轉(zhuǎn)換為Target的接口。適配器是一個具體的類,這是該模式的核心。


      適配器分為類適配器和對象適配器兩種,下面將詳細講述。


      類適配器


      所謂類適配器,指的是適配器Adapter繼承我們的被適配者Adaptee,并實現(xiàn)目標接口Target。由于Java中是單繼承,所以這個適配器僅僅只能服務(wù)于所繼承的被適配者Adaptee。代碼如下:


      被適配者(Adaptee)


      16package com.bluemsun.classadapter;


      public class Person {


      private int id;


      private String name;


      /**


      * person可以現(xiàn)在只能說英語


      */


      public void sayEnglish(){


      System.out.println(“Person can say english!”);


      }


      /**


      * 省略setter,getter.


      */


      }


      目標接口(Target)


      package com.bluemsun.classadapter;


      /**


      * 目標要求person可以說英語,法語,日語。但是現(xiàn)在的person僅僅可以說英語


      * @author Administrator


      *


      */


      public interface Target_Person {


      void sayEnglish();


      void sayFrench();


      void sayJapanese();


      }


      適配器(Adapter)


      package com.bluemsun.classadapter;


      /**


      * 類適配器,因為繼承了Person,而Java中只能單繼承,所以這個適配器只為person這一個類服務(wù)


      * 這個適配器就讓person類在不修改源碼的基礎(chǔ)上能實現(xiàn)目標接口所指定的方法


      * @author Administrator


      *


      */


      public class Adapter_Person extends Person implements Target_Person{


      @Override


      public void sayFrench() {


      System.out.println(“Person can say French!”);


      }


      @Override


      public void sayJapanese() {


      System.out.println(“Person can say Japanese!”);


      }


      }


      客戶端(Client)


      package com.bluemsun.classadapter;


      public class Test {


      public staTIc void main(String[] args) {


      Target_Person person = new Adapter_Person();


      person.sayEnglish();


      person.sayFrench();


      person.sayJapanese();


      }


      }


      上面的幾段簡單代碼演示了類適配器的作用。正如我們開始所言,這個適配器Adapter只能為Person這一個類所服務(wù)。這時候你可能會想,要是我所需要適配的類很多,是不是都需要為每一個需要適配的類寫一個Adapter?有沒有更加靈活的方式呢?答案是:有!就是我們下面所講的對象適配器。


      對象適配器


      所謂對象適配器,簡單的說就是適配器實現(xiàn)我們的目標接口,但是并不繼承需要被適配的類。而是通過在適配器的構(gòu)造函數(shù)中將需要被適配的類傳遞進來從而進行適配。代碼如下:(Target,Adaptee同上)


      適配器(Adapter)


      package com.bluemsun.objectdapter;


      import com.bluemsun.classadapter.Person;


      import com.bluemsun.classadapter.Target_Person;


      /**


      * 對象適配器,與類適配器不同的是:對象適配器可以適配多個源到目標


      * @author Administrator


      *


      */


      public class Adapter_Person implements Target_Person{ //僅僅實現(xiàn)目標接口


      private Person person;


      //在構(gòu)造函數(shù)中將Adaptee類Person傳遞進來


      public Adapter_Person(Person person){


      this.person = person;


      }


      //實現(xiàn)目標接口中的sayEnglish()--調(diào)用Adaptee中的sayEnglish()


      @Override


      public void sayEnglish() {


      this.person.sayEnglish();


      }


      //實現(xiàn)接口中的其它方法


      @Override


      public void sayFrench() {


      System.out.println(“person can say French!”);


      }


      @Override


      public void sayJapanese() {


      System.out.println(“person can say Japanese!”);


      }


      }


      客戶端(Client)


      package com.bluemsun.objectdapter;


      import com.bluemsun.classadapter.Person;


      import com.bluemsun.classadapter.Target_Person;


      public class Test {


      public staTIc void main(String[] args) {


      Target_Person person = new Adapter_Person(new Person());


      person.sayEnglish();


      person.sayFrench();


      person.sayJapanese();


      }

      }


      對象適配器可以適配多個帶適配的類。只需要你在Adapter的構(gòu)造方法中傳遞不同的帶適配的類即可。具有靈活性。


      類適配器的優(yōu)點:


      1、由于適配器類是適配者類的子類,因此可以再適配器類中置換一些適配者的方法,使得適配器的靈活性更強。


      類適配器的缺點:


      1、對于Java、C#等不支持多重繼承的語言,一次最多只能適配一個適配者類,而且目標抽象類只能為接口,不能為類,其使用有一定的局限性,不能將一個適配者類和他的子類同時適配到目標接口。


      對象適配器的優(yōu)點:


      1、把多個不同的適配者適配到同一個目標,也就是說,同一個適配器可以把適配者類和他的子類都適配到目標接口。


      對象適配器的缺點:


      1、與類適配器模式相比,要想置換適配者類的方法就不容易。

      上海意泓電子科技有限責任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復制或鏡像

      CopyRight 2020-2025 www.topsschool.com All rights reserved   滬ICP備2021005866號

      亚洲精品无码va人在线观看,少妇 逼小 水多,国产区免费av,国产精品无码观看

          亚洲综合中文字幕在线专区| 中字人妻内射喷潮第二页| 自拍亚洲中文字幕一区二区| 91麻豆精品一区二区三区| 成人黄色一级片| 中文字幕无码不卡在线| 久久一日本道色综合久久88| 亚洲欧美另类中文字幕| 无码av免费线播放| 国产精品免费无遮挡无码永久视频| 国产日韩精品欧美| 国产精品va在线观看不| 亚洲精品精品在线| 96网友上传国产视频| 久久人人爽人人片av免费| 国产性大片免费播放网站| 亚洲欧美日韩综合另类一区| 精品亚洲国产成人av制服丝袜| 在线综合 亚洲 欧美首页| 免费国产在线精品一区| 中文亚洲av片在线观看精品| 国产女人爽到高潮a毛片| 亚洲av无一区二区三区| 一级淫片120分钟试看好| 99久久国产自偷自偷免费一区| 亚洲伊人久久综合精品| 久久久精品一本二本三本| 无码视频人妻网站| 国产精品穿着丝袜打电话播放|