概述
- 適配器模式解決的問題:擴展老系統(tǒng)類似的新功能,通過引入適配器來解決颗品。開發(fā)中應(yīng)盡量避免使用適配器肯尺,而應(yīng)該在最開始設(shè)計時就考慮到可能要提供的功能。過度使用的適配器會系統(tǒng)功能變得混亂躯枢。
- 常用的適配器模式的實現(xiàn)方式有3種:繼承则吟、成員變量、多成員變量封裝成適配器
適配器模式的設(shè)計方法
擴展新功能有3種方式:
- 繼承擴展類锄蹂,獲取擴展功能氓仲。但是因為java單繼承,如果A類自身已經(jīng)繼承了得糜,就沒法擴展敬扛,而且最多只能擴展一個類,如果要擴展多個類則沖突了朝抖。
- 把擴展類作為成員變量啥箭,來獲取擴展功能。缺點是每次擴展一個功能治宣,都要修改客戶端的代碼急侥,這違反了開閉原則。
- 用Adapter來封裝所有要擴展的功能類侮邀±虑桑客戶端只需要和Adapter交互即可。例如下面的代碼豌拙,客戶端只要調(diào)用 Adapter.play就可以播放所有支持的類型的歌曲了。缺點:如果是一次只調(diào)用一個擴展類题暖,那么無需加載那么多無關(guān)的擴展功能類按傅,浪費內(nèi)存捉超。
Adapter{
private MP4 mp4=new MP4();
private FLV flv=new FLV();
public void play(String type,String fileName){
if(type.equals("mp4"){
mp4.play(fileName)
}else{
flv.play(fileName)
}
}
}