天天看點

設計模式一日一練:擴充卡模式(Adapter)

    Adapter模式,将一個類的接口轉換成客戶希望的另外一個接口;使得原本由于接口不相容而不能一起工作的類可以一起工作。

    Adapter模式分為類的擴充卡模式和對象擴充卡模式。類的擴充卡模式采用繼承方法,繼承一個類的接口和另一個類的實作;對象擴充卡模式采用組合,繼承一個類的接口,并将另一個類的對象作為自己的組成。

class Mouse {
    public:
        virtual void Click();
}

class Keyboard {
    public:
        void Tab();
        virtual void Input();
        void Delete();
}

// class's adapter
class WritingBoard : public Mouse, private Keyboard {
    public:
        virtual void Click();
        virtual void Input();
        virtual void Erase();
}

void WritingBoard::Click() {
    Tab();
}

void WritingBoard::Input() {
    Keyboard::Input();
}

void WritingBoard::Erase() {
    Delete();
}

// object's adapter
class WritingBoard : public Mouse{
    public:
        WritingBoard(Keyboard* board);
        virtual void Click();
        virtual void Input();
        virtual void Erase();
        
    private:
        Keyboard* keyboard;
}

WritingBoard::WritingBoard(Keyboard* board) {
    keyboard = board;
}

void WritingBoard::Click() {
    keyboard->Tab();
}

void WritingBoard::Input() {
    keyboard->Input();
}

void WritingBoard::Erase() {
    keyboard->Delete();
}
           

    PS. 我的設計模式系列blog,《設計模式》專欄,通過簡單的示例示範設計模式,對于初學者很容易了解入門。深入學習請看GoF的《設計模式》。

繼續閱讀