設計模式 適配器模式(Adapter)

適配器模式的做用是將一個類的接口轉換成客戶但願的另一個接口,使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做。作法是將類本身的接口包裹在一個已存在的類中。這種類型的設計模式屬於結構型設計模式html

UML角色:設計模式

Source:須要被適配的類、接口、對象,即Datas。 
Destination:須要獲得的類,Source經過適配獲得的類對象,也就是咱們期待獲得的藉口。 
Adapter:適配器類,協調Source和Destination,使二者可以協同工做。ide

實現方式:測試

類的適配器模式(採用繼承實現)
對象適配器(採用對象組合方式實現)
接口的適配器模式spa

應用場景:設計

系統須要使用現有的類,但現有的類卻不兼容。
須要創建一個能夠重複使用的類,用於一些彼此關係不大的類,並易於擴展,以便於面對未來會出現的類。
須要一個統一的輸出接口,可是輸入類型卻不可預知。code

 

類適配器模式示例分析htm

使用情景:當咱們要訪問的接口A中沒有咱們想要的方法 ,卻在另外一個接口B中發現了合適的方法,咱們又不能改變訪問接口A,在這種狀況下,咱們能夠定義一個適配器C來進行中轉,這個適配器C要實現咱們訪問的接口A,這樣咱們就能繼續訪問當前接口A中的方法,而後再繼承接口B實現類B1,這樣咱們能夠在適配器C中訪問接口B的方法了,這時咱們在適配器C中的接口A方法中直接引用B1中的合適方法,這樣就完成了一個簡單的類適配器。對象

以ps2與usb的轉接爲例blog

ps2接口:Ps2

1 public interface Ps2 {
2     void isPs2();
3 }

USB接口:Usb

1 public interface Usb {
2     void isUsb();
3 }

USB接口實現類:Usber

public class Usber implements Usb {
     @Override
    public void isUsb() {
         System.out.println("USB口");
     }
 
 } 

適配器:Adapter

public class Adapter extends Usber implements Ps2 {

     @Override
     public void isPs2() {
         isUsb();
     }
 
 }

測試類:Clienter

1 public class Clienter {
2 
3     public static void main(String[] args) {
4         Ps2 p = new Adapter(new Usber());
5         p.isPs2();
6     }
7 
8 }

結果顯示:

USB口

實例講解:

  我有個ps2插頭的設備,可是主機上只有適配usb插頭的接口,因此要找個轉換器,將ps2插頭轉換成爲USB插頭就可讓主機訪問到ps2設備了。

  接口Ps2:描述ps2接口格式

  接口Usb:描述USB接口格式

  類Usber:是接口Usb的實現類,是具體的USB接口格式

  Adapter:用於將ps2接口格式轉換成爲USB接口格式

 

參考連接:https://www.cnblogs.com/V1haoge/p/6479118.html

相關文章
相關標籤/搜索