最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

23種設(shè)計模式(5) java適配器模式

 更新時間:2017年11月09日 10:19:00   作者:阿木俠  
這篇文章主要為大家詳細介紹了23種設(shè)計模式之java適配器模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

23種設(shè)計模式第五篇:java適配器模式

定義:

將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 

角色:

目標(Target)角色:這就是所期待得到的接口,也就是這類的接口是符合我們要求的。

源(Adapee)角色:我們要使用的接口,但是這個接口不符合我們的要求,也就是現(xiàn)在需要適配的接口。 

適配器(Adaper)角色:適配器類是適配器模式的核心。適配器把源接口轉(zhuǎn)換成目標接口。顯然,這一角色不可以是接口,而必須是具體類。 

分類:

1、類適配器模式

class Adaptee {     
  publicvoid specificRequest() {
     System.out.println("特殊請求,這個是源角色");
  }
}
/*這個是目標角色,所期待的接口*/

interface Target {     
  publicvoid request();
}

現(xiàn)在想要實現(xiàn)這個Target接口,但是不想重構(gòu),想要用上已有的Adaptee類,這時可以定義一個適配器類,繼承想要使用的類,并且實現(xiàn)期待的接口。

class Adapter extends Adaptee implementsTarget{
     publicvoid request() {
          super.specificRequest();
     }
}

這樣,使用適配器類和實現(xiàn)目標接口就完成了計劃,測試:

public class Test{
     publicstatic void main(String[] args) {
          //使用特殊功能類,即適配類
          Targetadapter = new Adapter();
          adapter.request();
     }
}

2、對象適配器模式

適配器類關(guān)聯(lián)已有的Adaptee類,并且實現(xiàn)標準接口,這樣做的好處是不再需要繼承。

class Adapter implements Target{
     privateAdaptee adaptee;

     publicAdapter (Adaptee adaptee) {
          this.adaptee= adaptee;
     }

     publicvoid request() {
          this.adaptee.specificRequest();
     }
}

我們可以想到,此時輸出結(jié)果和類適配器模式是相同的,測試:

public class Test{
     publicstatic void main(String[] args) {
          Targetadapter = new Adapter(new Adaptee());
          adapter.request();
     }
}

區(qū)別:

對象的適配器模式不是使用繼承關(guān)系連接到Adaptee類,而是使用委派關(guān)系連接到Adaptee類。 

優(yōu)點: 

復用性

系統(tǒng)需要使用現(xiàn)有的類,而此類的接口不符合系統(tǒng)的需要。那么通過適配器模式就可以讓這些功能得到更好的復用。 

擴展性

在實現(xiàn)適配器功能的時候,可以自由調(diào)用自己開發(fā)的功能,從而自然地擴展系統(tǒng)的功能。 

缺點:

過多的使用適配器,會讓系統(tǒng)非常零亂,不易整體進行把握。比如,明明看到調(diào)用的是A接口,其實內(nèi)部被適配成了B接口的實現(xiàn)。所以適配器模式不適合在詳細設(shè)計階段使用它,它是一種補償模式,專用來在系統(tǒng)后期擴展、修改時所用。 

適用場景: 

1、已經(jīng)存在的類的接口不符合我們的需求;
2、創(chuàng)建一個可以復用的類,使得該類可以與其他不相關(guān)的類或不可預見的類協(xié)同工作; 
3、使用一些已經(jīng)存在的子類而不需要對其進行子類化來匹配接口。 
4、舊的系統(tǒng)開發(fā)的類已經(jīng)實現(xiàn)了一些功能,但是客戶端卻只能以另外接口的形式訪問,但我們不希望手動更改原有類的時候。 

小結(jié): 

適配器模式不適合在詳細設(shè)計階段使用它,它是一種補償模式,專用來在系統(tǒng)后期擴展、修改時所用,適配器模式更像是一種補救措施。

轉(zhuǎn)自:java知音

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中數(shù)組list map三者之間的互轉(zhuǎn)介紹

    java中數(shù)組list map三者之間的互轉(zhuǎn)介紹

    java中 數(shù)組 list map之間的互轉(zhuǎn)一張圖清晰呈現(xiàn)并附有代碼,不懂的朋友可以參考下
    2013-10-10
  • java結(jié)合HADOOP集群文件上傳下載

    java結(jié)合HADOOP集群文件上傳下載

    這篇文章主要介紹了java結(jié)合HADOOP集群文件上傳下載的方法和示例,非常的實用,這里推薦給大家,希望大家能夠喜歡。
    2015-03-03
  • 詳解Java集合中的基本數(shù)據(jù)結(jié)構(gòu)

    詳解Java集合中的基本數(shù)據(jù)結(jié)構(gòu)

    總有小伙伴讓我總結(jié)一下Java集合中的基本數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,今天特地整理了本篇文章,文中有非常詳細的介紹,需要的朋友可以參考下
    2021-06-06
  • Socket與ServerSocket類構(gòu)造方法與API

    Socket與ServerSocket類構(gòu)造方法與API

    今天小編為大家整理了Socket與ServerSocket類構(gòu)造方法與API,對大家的學習或工作具有一定的參考借鑒價值。需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-12-12
  • Tomcat處理請求的線程模型詳解

    Tomcat處理請求的線程模型詳解

    這篇文章主要為大家詳細介紹了Tomcat處理請求的線程模型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java中g(shù)etParameterTypes()方法的使用與原理分析

    Java中g(shù)etParameterTypes()方法的使用與原理分析

    本文詳細介紹了Java中g(shù)etParameterTypes()方法的使用方式、工作原理及其在實際開發(fā)中的應用,該方法用于獲取方法的參數(shù)類型列表,并通過反射機制在運行時動態(tài)地獲取這些信息,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Spring Boot支持Crontab任務(wù)改造的方法

    Spring Boot支持Crontab任務(wù)改造的方法

    這篇文章主要介紹了Spring Boot支持Crontab任務(wù)改造的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 匯總java調(diào)用python方法

    匯總java調(diào)用python方法

    這篇文章主要為大家詳細介紹了java調(diào)用python的方法,文章中介紹了三種java調(diào)用python方法,感興趣的朋友可以參考一下
    2016-02-02
  • 深入理解Netty?FastThreadLocal優(yōu)缺點及實現(xiàn)邏輯

    深入理解Netty?FastThreadLocal優(yōu)缺點及實現(xiàn)邏輯

    本文以線上詭異問題為切入點,通過對比JDK ThreadLocal和Netty FastThreadLocal實現(xiàn)邏輯以及優(yōu)缺點,并深入解讀源碼,由淺入深理解Netty FastThreadLocal
    2023-10-10
  • struts2標簽總結(jié)_動力節(jié)點Java學院整理

    struts2標簽總結(jié)_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細總結(jié)了struts2標簽的使用方法,和學習資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論

九江市| 乳源| 读书| 浑源县| 徐汇区| 灯塔市| 育儿| 黔西县| 景德镇市| 新巴尔虎右旗| 天峻县| 平和县| 南和县| 凌源市| 福海县| 开江县| 民权县| 九龙县| 建始县| 永登县| 鱼台县| 南充市| 渑池县| 汝南县| 新乡县| 宁国市| 定边县| 麻栗坡县| 民权县| 天等县| 金华市| 横山县| 托克逊县| 盐城市| 江达县| 鞍山市| 平乐县| 庄浪县| 夹江县| 琼海市| 饶平县|