Pattern: Adapter 簡單實現

來源:互聯網
上載者:User

在 android 編程中,形形色色的 Adapter 到處可見,其複雜的設計讓人驚噓不已!


結合自己的親身體會,跟大家聊聊適配器這這種設計模式。


歡迎拍磚!


很形象的一個例子


現在你手頭上有一台筆記本,需要充電,不然最後一關搶寶藏的遊戲可能要泡湯了,怎麼辦?

很簡單,找個適配器充電唄!

於是乎,適配器找到了,電源是現成的,終於可以重新開戰了!


這個過程很簡單,但是蘊涵了今天所說的適配器(Adapter)。

試想一下,沒有適配器的話,你不可能把 220V 的電壓直接接在你心愛的筆記本上面吧?!


適配器,簡單來說就是整合已有的資源供別人使用的一個工具。


軟體實現


具體實現有兩中方式,使用繼承或者彙總(可以說是委派)。


Power.java


package mark.zhang;public class Power {public void supply() {System.out.println("power is suppling voltage......"); }}

IConvertor.java

package mark.zhang;public interface IConvertor {public abstract void convert();}

PC.java

package mark.zhang;public class PC {Adapter mAdapter;public void setAdapter(Adapter adapter) {mAdapter = adapter;mAdapter.convert();work();}public void work() {System.out.println("pc is working......");}}

接下來可以設計 Adapter


彙總的方式實現 Adapter.java


package mark.zhang;public class Adapter implements IConvertor {Power power;public Adapter() {power = new Power();}@Overridepublic void convert() {power.supply();}}


簡單的實現了 Power 適配器。


繼承的方式實現 Adapter.java


package mark.zhang;public class Adapter extends Power implements IConvertor {@Overridepublic void convert() {supply();}}


用戶端調用 Client.java


package mark.zhang;public class Client {public static void main(String[] args) {PC pc = new PC();Adapter a = new Adapter();pc.setAdapter(a);}}

可以看出,無論那種方式實現 Adapter,Adapter 都實現了介面方法,目的就是調用 Power 的 supply.


但是這種簡單的實現缺點還是很多的


比如,各個類設計過於具體(相對於抽象來說),程式沒有彈性,沒有面向抽象(或者介面)編程的思想。


還好,今天只是介紹一下 Adapter,複雜的實現,後面再說。









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.