適配器模式 有時候也稱包裝樣式或者包裝。將一個類的接口轉(zhuǎn)接成用戶所期待的。一個適配使得因接口不兼容而不能在一起工作的類工作在一起,做法是將類別自己的接口包裹在一個已存在的類中。
有兩類適配器模式:
·對象適配器模式 - 在這種適配器模式中,適配器容納一個它我包裹的類的實例。在這種情況下,適配器調(diào)用被包裹對象的物理實體。
·類適配器模式 - 這種適配器模式下,適配器繼承自已實現(xiàn)的類(一般多重繼承)。facade 為外部提供一致的界面,但不改動邏輯語義
圖1:類模式適配器

圖2:對象模式適配器

外觀模式 為子系統(tǒng)中的一組接口提供一個統(tǒng)一的高層接口,使得子系統(tǒng)更容易使用。
在cocos2d-x中,SimpleAudioEngine是一個外觀模式。它將不同平臺的通用的音頻操作整合為一致的接口。
來自維基百科的實現(xiàn):http://zh.wikipedia.org/wiki/%E5%A4%96%E8%A7%80%E6%A8%A1%E5%BC%8F

class CPU {
public:
void freeze() {

}
void jump(
long position) {

}
void execute() {

}
}
class Memory {
public:
void load(
long position,
char* data) {

}
}
class HardDrive {
public:
char* read(
long lba,
int size) {

}
}
/* Façade */ class Computer {
public:
void startComputer() {
cpu.freeze();
memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE));
cpu.jump(BOOT_ADDRESS);
cpu.execute();
}
}
/* Client */ class You {
public:
void start(String[] args) {
Computer facade =
new Computer();
facade.startComputer();
}
}
外觀模式 與 適配器模式 的區(qū)別在于,適配器是為了使得一個已經(jīng)存在的類在邏輯上成為另外一種類;而外觀模式只是為了將邏輯相同,但是底層細節(jié)不同的接口轉(zhuǎn)化為統(tǒng)一的接口,起語義邏輯不變。