電腦適配器是什麽(適配器能當充電器用嗎)
適配器在生活中無處不在,比如電腦適配器,讀卡器,電源適配器。它們的共同點是接口標準不同,需要通過一個適配器轉換後才能使用。以讀卡器為例,存儲卡的接口隻能適配相機或手機的卡槽。而電腦一般都是USB接口。那麽如何使用電腦上的存儲卡呢?我們可以用讀卡器。一個卡槽可以插存儲卡,另一個USB可以插電腦。適配器可以解決接口不兼容的問題。再比如電腦的變壓器。電腦一般接收20V電壓,而我們國家的電壓是220V,所以需要一個變壓器進行轉換。如下圖所示,輸入電壓為220V,輸出電壓轉換為20V。變壓器實際上是一個適配器。
1. 實現適配器模式
讓我們以下麵的例子來看看如何實現適配器模式。如果我們的電視屏幕輸出4K畫質,但是播放器隻能輸出2K畫質,那麽就需要一個適配器來完成從2K到4K的轉換。代碼如下:
隻能輸出2k信號的播放器:
公共類玩家{
公共兩千信號播放(){
返回新的two thousandsignal();
}
}
我們定義了一個更現代的播放器的接口,它輸出4K信號:
公共接口ModernPlayer {
fourthoundsignal play();
}
這個接口的實現是一個適配器。通過複用播放器輸出的2K信號,轉換成4K信號,支持ModernPlayer的設備可以播放2K信號源。
公共類ModernPlayerAdapter實現ModernPlayer {
私人玩家player=新玩家();
@覆蓋
公共四千信號播放(){
two thousandsignal two thousandsignal=player . play();
返回convertToFourThousandSignal(two thousandsignal);
}
專用四千信號轉換器四千信號(兩千信號兩千信號){
//4k信號通過算法計算,由2k轉換而來。省略轉換邏輯,
返回新的fourthoundsignal();
}
}
作為電視的調用者,你隻需要使用ModernPlayerAdapter的實例來播放2K信號。代碼如下:
公共類電視{
private modern player modern player=new modern player adapter();
公共void顯示(){
modern player . play();
}
}
看看代碼看起來像不像代理模式?ModernPlayerAdapter隻是調用Adaptee的方法,將2k信號轉換成4K信號。區別在於播放器沒有實現ModernPlayer接口。代理模式、Proxy和RealSubject都需要實現相同的接口。適配器的作用是適應不同的接口。兩個接口的返回值不同,所以轉換邏輯需要在Adapter中實現。
類圖:
2. 適配器模式優點
重用現有類,不修改現有接口和實現;具有很高的靈活性,可以在不改變接口的情況下兼容很多不同的類。
3. 適配器模式適用場景
想使用一個已有的類,但是這個類的接口不符合用戶的要求;多個類做相同或相似的事情,但是它們的接口不同。調用者希望統一界麵。第一場可以認為是亡羊補牢,為時已晚。由於各種原因,係統界麵不同,但功能相似。這時候很有可能無法直接修改已有的接口,隻能通過適配器模式來適配這個接口。
第二個場景其實很常見。比如我們開發一個比價網站,需要從不同的網站抓取同類產品的價格,然後按照自己係統的數據結構進行保存。不同網站抓取的數據肯定是不一樣的,字段名不一樣,或者數據結構不一樣。但是最後都要保存在同一個數據結構中,這個時候就需要適配器進行轉換。
4. 小結
當我們麵對難以轉換的對象,想要重用時,可以考慮采用適配器模式。但是切記不要濫用適配器。在最初設計程序時,我們應該考慮代碼的可擴展性。而不是最終通過適配器解決問題。能修改重構的,盡量修改。如果不能修改,比如外係統的接口,那就隻能通過適配器模式來解決了。
本文到此結束,希望對大家有所幫助呢。