日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5 结构型模式之 - 适配器模式

發布時間:2023/12/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5 结构型模式之 - 适配器模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
5 結構型模式之 - 適配器模式

適配器模式的介紹:適配器模式在開發中使用率很高,適配器是將兩個不兼容的類融合在一起,它有點像粘合劑,將不同的東西通過一種轉換使得它們能夠協作起來。例如經常碰到兩個不相關的類之間進行交互,第一個解決方案是修改各自類的接口,但是如果沒有源碼或者我們不愿意為了一個應用而修改各自的接口,此時怎么辦?這種情況我們往往會使用一個Adapter,在這兩種接口之間創建一個“混血兒”接口,這個Adapter會將這兩個接口兼容,在不修改源碼的情況下滿足需求。

適配器模式的定義:適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能在一起工作

適配器使用場景:

1 系統需要使用現有的類,而此類的接口不符合系統的需要,即接口不兼容

2 想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作

3 需要一個統一的輸出接口,而輸入端的類型不可預知

?

用電源接口做例子,筆記本電腦的電源一般都是5V電壓,但是我們生活中的電線電壓一般都是220V,這個時候就出現了不匹配的情況,不軟件開發中我們稱之為接口不兼容,此時就需要適配器來進行一個接口轉換,在軟件開發中有一句話正好體現了這點:任何問題都可以加一個中間層來解決。這個層我們可以理解為這里的Adapter層,通過這層來進行一個接口轉換就達到了兼容的目的。

適配器模式分分兩種:

1)類適配器模式

2) 對象適配器模式

先說第一種類適配器模式:

?

5V電壓的接口,代碼如下:

1 /** 2 * Target角色,就是要轉換成的5V的 3 */ 4 public interface FiveVolt { 5 int getVolt5(); 6 }

?

220V的電壓,需要被轉換的

1 /** 2 * 220V的電壓,被轉換的類 3 */ 4 public class Volt220 { 5 public int getVolt220(){ 6 return 220; 7 } 8 }

?

下面是Adapter角色,將220V的電壓轉換成5V的電壓

1 /** 2 * 適配器,即有5V的,又有220V的,就像轉換頭一樣,兩邊都可以兼容 3 */ 4 public class ClassVoltAdapter extends Volt220 implements FiveVolt { 5 @Override 6 public int getVolt5() { 7 return 5; 8 } 9 }

看到沒,上面的ClassVoltAdapter里面即有220V的,又有5V的,需要5V的也可以用,需要220V的也可以用。

下面是類適配器模式的測試類:

1 /** 2 * 下面是類適配器模式的測試類 3 */ 4 public class ClassAdapterTest { 5 public static void main(String[] args){ 6 test(); 7 } 8 9 public static void test(){ 10 11 ClassVoltAdapter voltAdapter = new ClassVoltAdapter(); 12 System.out.println(voltAdapter.getVolt5()); 13 14 } 15 16 }

?

?

下面再來看看第二種適配器模式:對象適配器模式

首先前面的 5V的接口和220V的類還是一樣的。這里只是把代碼貼出來供方便查看的。

5V電壓的接口,代碼如下:

1 /** 2 * Target角色,就是要轉換成的5V的 3 */ 4 public interface FiveVolt { 5 int getVolt5(); 6 }

?

220V的電壓類

/*** 220V的電壓,被轉換的類*/ public class Volt220 {public int getVolt220(){return 220;} }

?

下面看一下對象適配器類:主要是實現了目標接口,并且保存了一個被轉換的類的對象的引用 ,代碼如下:

1 /** 2 * 對象適配器,實現目標接口,保存一個被轉換對象的引用 3 */ 4 public class ObjectVoltAdapter implements FiveVolt{ 5 //保存一個被轉換對象的引用 6 Volt220 volt220; 7 8 public ObjectVoltAdapter(Volt220 volt220){ 9 this.volt220 = volt220; 10 } 11 12 @Override 13 public int getVolt5() { 14 return 5; 15 } 16 17 public int getVolt220(){ 18 return volt220.getVolt220(); 19 } 20 }

?

下面是對象適配器模式測試類:

1 /** 2 * 對象適配器的測試類 3 */ 4 public class ObjectVoltAdapterTest { 5 public static void main(String[] args){ 6 test(); 7 } 8 9 public static void test(){ 10 //創建一個220V的電壓類的對象,也就是被轉換的類的對象 11 Volt220 volt220 = new Volt220(); 12 //創建一個對象適配器類的對象,并且保存一個被轉換的類的對象 13 ObjectVoltAdapter voltAdapter = new ObjectVoltAdapter(volt220); 14 System.out.println(voltAdapter.getVolt5()); 15 } 16 }

?

posted on 2017-04-26 20:25?九路313 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/start1225/p/6770532.html

總結

以上是生活随笔為你收集整理的5 结构型模式之 - 适配器模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。