Java設計模式(七):介面卡設計模式
阿新 • • 發佈:2019-01-08
1. 應用場景
在軟體開發中,也就是系統的資料和行為都正確,但介面不相符時,我們應該考慮用介面卡,目的是使控制範圍之外的一個原有物件與某個介面匹配。介面卡模式主要應用於希望複用一些現存的類,但是介面又與複用環境要求不一致的情況。比如在需要對早期程式碼複用一些功能等應用上很有實際價值。適用場景大致包含三類:
- 已經存在的類的介面不符合我們的需求;
- 建立一個可以複用的類,使得該類可以與其他不相關的類或不可預見的類(即那些介面可能不一定相容的類)協同工作;
- 在不對每一個都進行子類化以匹配它們的介面的情況下,使用一些已經存在的子類。
2. 概念
將一個類的介面,轉換成客戶期望的另一個介面。介面卡讓原本介面不相容的類可以合作無間。
3. Class Diagram
介面卡設計模式類定義中包括被介面卡類,介面卡類。
Implementation
鴨子(Duck)和火雞(Turkey)擁有不同的叫聲,Duck 的叫聲呼叫 quack() 方法,而 Turkey 呼叫 gobble() 方法。
要求將 Turkey 的 gobble() 方法適配成 Duck 的 quack() 方法,從而讓火雞冒充鴨子!
public interface Duck {
void quack();
}
public interface Turkey {
void gobble();
}
public class WildTurkey implements Turkey {
@Override
public void gobble() {
System.out.println("gobble!");
}
}
public class TurkeyAdapter implements Duck {
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this .turkey = turkey;
}
@Override
public void quack() {
turkey.gobble();
}
}
public class Client {
public static void main(String[] args) {
Turkey turkey = new WildTurkey();
Duck duck = new TurkeyAdapter(turkey);
duck.quack();
}
}