# 前言 本文主要講述**適配器模式**,文中使用通俗易懂的案例,使你更好的學習本章知識點並理解原理,做到有道無術。 # 一.什麼是適配器模式 適配器模式是23種設計模式中**結構型模式**的一種,將一個類的介面轉換成客戶希望的另外一個介面。適配器模式使得原本由於介面不相容而不能一起工作的那些類可以 ...
前言
本文主要講述適配器模式,文中使用通俗易懂的案例,使你更好的學習本章知識點並理解原理,做到有道無術。
一.什麼是適配器模式
適配器模式是23種設計模式中結構型模式的一種,將一個類的介面轉換成客戶希望的另外一個介面。適配器模式使得原本由於介面不相容而不能一起工作的那些類可以在一起工作。
二.生活中的適配器模式
1.太陽能
太陽能、風能、水能這類自然能是大自然賜予我們的禮物。比如說太陽能板就能夠把太陽能轉換成咱們的電能,然後給家裡的電器使用,如果是沒有太陽能板,我們是無法直接把太陽能供給電器使用的,這個太陽能板就像設計模式中的適配器模式一樣。
2.見手青
雲南人民很喜歡喜食菌類,但是不是每種菌類都可以吃,或者是有些菌類在沒完全煮熟的時候是有毒的,比如見手青。生的見手青是會讓人中毒的,而一些見手青通過烹飪完全熟透後是可以食用並且還是一道美味,不過得註意不是所有見手青的品種都可以煮熟食用。讓有毒不可食用的見手青轉換成熟透可食用無毒的見手青的這個工具就像設計模式中的適配器模式一樣。
3.充電器
中國家庭所用的交流電標準電壓為220V,如果用直接把插座里的電通往手機的話,可能會發生爆炸。這個時候我們就需要用到手機專用的充電器了,通過充電器,我們把220V的電流轉換成手機適配的電流,電腦的充電器也是同樣的原理。這個充電器就像是設計模式中的適配器模式一樣。
三.適配器模式的實現
接下來以太陽能汽車舉例,通過適配器模式來實現。先創建一個適配者類太陽類和目標抽象類客戶需要的介面
package com.qianfeng.ran;
/*
* @author:江帥
* 適配者類:Adaptee
* 太陽類
*/
public class Sun {
//發散太陽能的行為
public void behavior(){
System.out.print("太陽能");
}
}
/*
* @author:江帥
* 目標抽象類:Target
* 客戶需要的介面
*/
interface SolarToElectric {
//把太陽能轉換成電能
void transition();
}
再創建一個適配器類太陽能板和客戶類太陽能汽車
package com.qianfeng.ran;
/*
* @author:江帥
* 適配器類:Adapter
* 太陽能板
*/
public class SolarPanel implements SolarToElectric {
//太陽能類
public Sun sun;
public SolarPanel(Sun sun){
this.sun = sun;
}
//太陽能轉換成電能
@Override
public void transition() {
//獲取太陽能
sun.behavior();
System.out.print("轉換成電能");
}
}
/*
* @author:江帥
* 客戶類:Client
* 太陽能汽車
*/
class SolarCar {
//發動機
public void engine(SolarToElectric solarToElectric){
//通過太陽能板獲取能量
solarToElectric.transition();
System.out.print("發動汽車");
}
}
最後我們通過適配器模式實現把太陽能轉換成電能的過程
package com.qianfeng.ran;
/*
* @author:江帥
* 客戶端
*/
public class Demo {
public static void main(String[] args) {
//創建一個太陽能板類,需要傳遞發散太陽能的太陽類
SolarToElectric solarPanel = new SolarPanel(new Sun());
//創建一個太陽能汽車
SolarCar car = new SolarCar();
//執行結果:
//太陽能轉換成電能發動汽車
car.engine(solarPanel);
}
}
四.配套視頻
如果你不習慣閱讀技術文章,或是對文中的技術概念不能很好地理解,可以來看看我們幫你篩選出的視頻教程。戳這裡
以上就是本文的全部內容啦,更多精彩可以關註小千,get技術知識點