介面卡模式:將乙個類的介面,轉換為客戶期望的另乙個介面。讓原本介面不相容的類可以合作無間。
可以通過建立介面卡進行介面轉換,讓不相容的介面變成相容的。
呼叫介面卡方法,介面卡使用被適配者,把呼叫轉換成被適配者的乙個或多個呼叫介面。
介面卡組合被適配者,實現目標介面。
老氣象站的天氣預報介面:getwendu();
新氣象站的天氣預報介面:gettemperature();
tencentqq之前一直使用老的氣象站,獲取氣溫。
由於老的氣象站裝置落後資料不精確,想呼叫新氣象局的天氣預報介面。
但是新氣象站的介面和老氣象站的介面不相容,必須改**。
能不能不修改**的前提下,就能實現新氣象局的介面呼叫呢?
用介面卡模式可以實現。
只要新氣象局能做乙個介面卡,實現目標介面(老氣象站介面),並且組合被適配者(新氣象站)。
呼叫介面卡的方法,介面卡會使用被適配者,把呼叫轉換成被適配者的乙個或多個呼叫介面。
package com.ez.biz;
import com.ez.newweatherservice;
import com.ez.oldweatherservice;
import com.ez.impl.newweatherserviceadapter;
import com.ez.impl.newweatherserviceimpl;
import com.ez.impl.oldweatherserviceimpl;
/** * tencentqq不需要改一行**,就可以實現新氣象站的氣溫獲取。
* 新氣象站就是被適配者(實現目標介面),用老氣象站介面就是目標介面。
* @author 窗外賞雪(ez程式設計網)
*/public class test
}
package com.ez.biz;
import com.ez.oldweatherservice;
/** * 客戶方**,就算出了新的氣象台,也無需要改任何**。
* 只要把新氣象台介面卡注入進來,不改**就可以通過新氣象台介面卡獲取氣溫。
* @author 窗外賞雪(ez程式設計網)
*/public class tencentqq
public void showtemperature()
}
package com.ez;
/** * 老氣象站服務介面
* @author 窗外賞雪(ez程式設計網)
*/public inte***ce oldweatherservice
package com.ez;
/** * 新氣象站服務介面
* 想要客戶不改**就可以呼叫新氣象站服務,必須適配新氣象站服務。
* @author 窗外賞雪(ez程式設計網)
*/public inte***ce newweatherservice
package com.ez.impl;
import com.ez.oldweatherservice;
/** * @author 窗外賞雪(ez程式設計網)
*/public class oldweatherserviceimpl implements oldweatherservice
}
package com.ez.impl;
import com.ez.newweatherservice;
/** * @author 窗外賞雪(ez程式設計網)
*/public class newweatherserviceimpl implements newweatherservice
}
package com.ez.impl;
import com.ez.newweatherservice;
import com.ez.oldweatherservice;
/** * 新氣象站介面卡,需要實現想轉換的型別介面(目標介面:老氣象站介面),就是客戶所期望看到的介面。
* 介面卡實現了目標介面,並持有被適配者的例項(新氣象站)
* 1、客戶通過目標介面呼叫介面卡的方法。
* 2、介面卡使用被適配者介面,把請求轉換成被適配者的乙個或多個呼叫介面。
* 3、客戶接收到呼叫的結果,但並未察覺這一切是介面卡在起轉換作用。
* @author 窗外賞雪(ez程式設計網)
*/public class newweatherserviceadapter implements oldweatherservice
//新氣象站需要適配的介面
@override
public void getwendu()
}
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...