适配器有效顯示模式?适配器在生活中無處不在,比如電腦的轉接頭、讀卡器、電源轉接頭他們的共同點就是接口标準不一樣,需要通過适配器轉換後才能使用就拿讀卡器來說,存儲卡的接口隻能适配相機或者手機的卡槽而電腦普遍為 USB 接口那麼如何在電腦上使用存儲卡呢?我們可以用讀卡器,一頭卡槽能夠插入存儲卡,另一頭 USB 可以插在電腦上通過适配器可以解決接口不兼容的問題還有個例子就是電腦的變壓器,電腦一般接收20V電壓,但是我國電壓是220V,因此就需要變壓器做轉換,如下圖所示,進來是220V,出來被轉為20V變壓器其實就是适配器,下面我們就來聊聊關于适配器有效顯示模式?接下來我們就一起去了解一下吧!
适配器在生活中無處不在,比如電腦的轉接頭、讀卡器、電源轉接頭。他們的共同點就是接口标準不一樣,需要通過适配器轉換後才能使用。就拿讀卡器來說,存儲卡的接口隻能适配相機或者手機的卡槽。而電腦普遍為 USB 接口。那麼如何在電腦上使用存儲卡呢?我們可以用讀卡器,一頭卡槽能夠插入存儲卡,另一頭 USB 可以插在電腦上。通過适配器可以解決接口不兼容的問題。還有個例子就是電腦的變壓器,電腦一般接收20V電壓,但是我國電壓是220V,因此就需要變壓器做轉換,如下圖所示,進來是220V,出來被轉為20V。變壓器其實就是适配器。
1. 實現适配器模式我們通過如下例子,來看看如何實現适配器模式。假如我們的電視機屏幕輸出為 4K 畫質,但播放器隻能輸出 2K 的畫質,此時就需要一個适配器完成 2K 到 4K 的轉換。代碼如下:
隻能輸出 2k 信号的 player:
public class Player {
public TwoThousandSignal play() {
return new TwoThousandSignal();
}
}
我們定義一個更為現代的播放器的接口,輸出 4K 信号:
public interface ModernPlayer {
FourThousandSignal play();
}
這個接口的實現就是一個适配器( adapter ),通過複用 Player 輸出的 2K 信号,轉化為 4K 信号,讓支持 ModernPlayer 的設備來播放 2K 信号源。
public class ModernPlayerAdapter implements ModernPlayer {
private Player player = new Player();
@Override
public FourThousandSignal play() {
TwoThousandSignal twoThousandSignal = player.play();
return convertToFourThousandSignal(twoThousandSignal);
}
private FourThousandSignal convertToFourThousandSignal(TwoThousandSignal twoThousandSignal) {
//4k信号通過算法計算,從2k轉換而來。省略轉換邏輯,
return new FourThousandSignal();
}
}
電視機作為調用方,隻需要使用 ModernPlayerAdapter 的實例就可以播放 2K 信号,代碼如下:
public class Television {
private ModernPlayer modernPlayer = new ModernPlayerAdapter();
public void display(){
modernPlayer.play();
}
}
看代碼是不是很像代理模式?ModernPlayerAdapter 隻是調用了Adaptee的方法,獲得 2k 信号後轉換為 4K 信号。區别在于 Player 并沒有實現 ModernPlayer 接口。而代理模式,Proxy 和 RealSubject 是都需要實現同一個接口的。Adapter 的作用是适配不同接口,兩個接口的返回值是不同的,Adapter 中需要實現轉換邏輯。
類圖:
2. 适配器模式優點第一個場景可以認為是亡羊補牢。由于種種原因造成系統接口不同,但功能卻類似。此時很可能我們不能直接修改已經存在的接口,我們隻能通過适配器模式去适配這個接口。
第二個場景其實也很常見。比如我們開發一個比價網站,需要從不同網站抓取同類商品的價格,然後按照自己系統的數據結構保存。不同網站抓取到的數據肯定是不同的,可能字段名不一樣,也可能數據結構都不同。但是最終都要保存為同樣的數據結構,此時就需要适配器來做轉換。
4. 小結當我們面對難以改造,又想複用的對象時,可以考慮采用适配器模式。但切記一定不要濫用适配器。我們應該在最初設計程序的時候就考慮代碼的可擴展性。而不是最後通過适配器來解決問題。能修改重構的,盡量去修改。實在不能修改的,比如外部系統的接口,我們就隻能通過适配器模式來解決問題。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!