《java與模式》學習系列——適配器模式

來源:互聯網
上載者:User

 

一、適配器模式的結構

適配器模式(Adapter Pattern)把一個類的介面變換成用戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。適配器模式有類的適配器模式和對象的適配器模式兩種形式。

類的適配器模式如所示:

對象的適配器模式結構如下:

適配器模式的用意是將介面不同而功能相同或相近的兩個介面加以轉換,這裡麵包括適配器角色補充了一個源角色沒有的方法。讀者不要誤以為適配器模式就是為了補充源角色沒有的方法而準備的。

二、適配器的適用情境

1、系統需要使用現有的類,而此類的介面不符合系統的需要。

2、想要建立一個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。這些源類不一定有複雜的介面。

3、對對象的適配器模式而言,在設計裡,需要改變多個已有的子類介面,如果使用類的適配器模式,就要針對每一個子類做一個適配器類,而這不太實際。

三、適配器模式在java中的應用

         JDBC驅動軟體與適配器模式

 

 

預設適配模式

預設適配模式為一個介面提供預設實現,這樣子類型可以從這個預設實現進行擴充,而不必從原有介面進行擴充。很多情況下,必須讓一個具體類實現某一個介面,但是這個類又用不到介面所規定的所有方法。可以用一個抽象類別給出所有方法的平庸的具體實現,這樣從這個抽象類別再繼承下去的子類就不必實現所有的方法了,而這就是預設適配模式。

其結構圖如下:

其原始碼如下:

public interface AbstractServie{

         void
serviceOperation1();

         int
serviceOperation2();

         String
serviceOperation3();

}

public class ServiceAdapter

         implements
AbstractService

{

         public void
serviceOperation1(){}

public int serviceOperation2(){ return 0;}

public String serviceOperation3(){return null;}

}

預設適配模式的中心是一個預設適配類。這個類應當是抽象類別,因為這個類不應當執行個體化,它的執行個體也沒有用處。但是這些方法不應是抽象的方法,因為按照模式的用意,這些方法之所以存在,就是為了提供預設實現,以便預設適配類的具體子類可以按照需要只實現需要實現的方法,忽略不需要實現的方法。

jdk中當量使用預設適配模式,在java2.0的java.awt庫中,預設適配類有WindowAdapter, ComponentAdapter, ContainerAdapter, FocusAdapter,
KeyAdapter, MouseAdapter, MouseMotionAdapter, WindowAdapter

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.