適配器模式
1.定義
將一個類的接口改變成客戶端所期待的另一種接口,從而使因為接口不匹配而不能在一起工作的兩個類能夠協(xié)同工作吧享。
適配器模式通常有四種角色布讹。
AbstractTarget:抽象目標(biāo)角色。定義將其它類轉(zhuǎn)換為什么接口枣接。
public interface AbstractTarget {
void request();
}
Target:目標(biāo)角色。抽象目標(biāo)角色的具體實現(xiàn)硕旗。
public class Target implements AbstractTarget {
@Override
public void request() {
System.out.println("this is target!");
}
}
Adaptee:源角色窗骑。即將被轉(zhuǎn)換的角色。
public interface AbstractAdaptee {
void doSomething();
}
public class Adaptee implements AbstractAdaptee {
@Override
public void doSomething() {
System.out.println("This is adaptee!");
}
}
Adapter:適配器角色卵渴。核心角色慧域,將源角色轉(zhuǎn)換為目標(biāo)角色鲤竹。
public class Adapter extends Adaptee implements AbstractTarget {
@Override
public void request() {
super.doSomething();
}
}
場景類
public class Client {
public static void main(String[] args) {
// 原目標(biāo)角色
AbstractTarget targetOne = new Target();
targetOne.request();
// 增加適配器
AbstractTarget targetTwo = new Adapter();
targetTwo.request();
}
}
2.應(yīng)用
2.1 優(yōu)點
- 可以把兩個毫無關(guān)系的兩個類在一起運行浪读,只需要完成它們之間的適配器即可。
- 將目標(biāo)角色的實現(xiàn)都委托為源角色辛藻,對高層模塊來說是透明的碘橘,且不需要關(guān)心。
- 提高了類的復(fù)用度吱肌。原角色在原系統(tǒng)及新系統(tǒng)中都可以繼續(xù)使用痘拆。
2.3 使用場景
接口擴展,使用一個已有或新建且不符合系統(tǒng)原有設(shè)計的類修改一個已經(jīng)投產(chǎn)的接口氮墨。
2.4 注意事項
在系統(tǒng)詳細設(shè)計階段盡量不要考慮適配器模式纺蛆。適配器模式是為了解決正在投產(chǎn)的項目問題而不是還處于開發(fā)階段的項目問題。