[設計模式-結構型]適配器(Adapter)

來源:互聯網
上載者:User
概括

名稱

Adapter

結構

動機

將一個類的介面轉換成客戶希望的另外一個介面。Adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

適用性

  • 你想使用一個已經存在的類,而它的介面不符合你的需求。

  • 你想建立一個可以複用的類,該類可以與其他不相關的類或不可預見的類(即那些介面可能不一定相容的類)協同工作。

  • (僅適用於對象Adapter )你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的介面。對象適配器可以適配它的父類介面。

解析

形象比喻:

ADAPTER—在朋友聚會上碰到了一個美女Sarah,從香港來的,可我不會說粵語,她不會說普通話,只好求助於我的朋友kent了,他作為我和Sarah之間的Adapter,讓我和Sarah可以相互交談了(也不知道他會不會耍我)

  適配器(變壓器)模式:把一個類的介面變換成用戶端所期待的另一種介面,從而使原本因介面原因不匹配而無法一起工作的兩個類能夠一起工作。適配類可以根據參數返還一個合適的執行個體給用戶端。

    1.Target
      定義Client使用的與特定領域相關的介面。

    2.Client
      與符合Target介面的對象協同。

    3.Adaptee
      定義一個已經存在的介面,這個介面需要適配。

    4.Adapter
      對Adaptee的介面與Target介面進行適配

一言蔽之,就是在一個類的執行個體中可以調用另一個類的執行個體的方法。

執行個體

涉及的檔案有:

Target.java  - 調用的介面

Adaptee.java - 被適配的類

Adapter.java - 適配的類,(被適配的類的執行個體作為此類執行個體的一個屬性)

TestMain.java

/**    * @author oscar999    * @date 2013-7-23 * @version V1.0    */package designptn.adapter;public interface Target {void adapteeMethod();void adapterMethod();}

/**    * @author oscar999    * @date 2013-7-23 * @version V1.0    */package designptn.adapter;public class Adaptee {public void adapteeMethod() {System.out.println("Adaptee Method!");}}
/**    * @author oscar999    * @date 2013-7-23 * @version V1.0    */package designptn.adapter;public class Adapter implements Target {private Adaptee adaptee;public Adapter(Adaptee adaptee){this.adaptee = adaptee;}@Overridepublic void adapteeMethod() {// TODO Auto-generated method stubadaptee.adapteeMethod();}@Overridepublic void adapterMethod() {// TODO Auto-generated method stubSystem.out.println("Adapter Method!");}}

/**    * @author oscar999    * @date 2013-7-23 * @version V1.0    */package designptn.adapter;public class TestMain {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubTarget target = new Adapter(new Adaptee());target.adapteeMethod();target.adapterMethod();}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.