適配器模式 有時候也稱包裝樣式或者包裝。將一個的接口轉(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)一的接口,起語義邏輯不變。