C++設計模式淺識外觀模式

黄舟
發布: 2017-01-18 14:52:47
原創
1590 人瀏覽過

外觀模式(Facade):為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

兩大角色:

外觀類Facade: 知道哪些子系統類別負責處理請求,將客戶的請求代理給適當的子系統物件。

子系統集合SubSystem: 實作子系統的功能,處理Facade物件指派的任務。注意:子類別沒有Facade的任何訊息,即沒有對Facade物件的引用。

本文以購買基金為例,客戶只需買進賣出基金(Facade),而其中的股票1、股票2、股票3等(SubSystem)操作由基金公司負責處理。

測試案例:

[code]int main(){
    Fund fund;//基金对象(Facade)
    fund.fundBuy();//stock1 buy stock2 buy stock3 buy
    fund.fundSell(); //stock1 sell stcok2 sell stock3 sell

    return 0;
}
登入後複製

外觀模式實作:

[code]//子系统不知道Facade的任何信息
//股票1号
class Stock1{
public:
    void sell(){
        std::cout << "stock1 sell\n";
    }
    void buy(){
        std::cout << "stock1 buy\n";
    }
};
//股票2号
class Stock2{
public:
    void sell(){
        std::cout << "stcok2 sell\n";
    }
    void buy(){
        std::cout << "stock2 buy\n";
    }
};
//股票3号
class Stock3{
public:
    void sell(){
        std::cout << "stock3 sell\n";
    }
    void buy(){
        std::cout << "stock3 buy\n";
    }
};

//基金类是Facade
class Fund{
public:
    Stock1 stock1;
    Stock2 stock2;
    Stock3 stock3;
    void fundSell(){
        stock1.sell();
        stock2.sell();
        stock3.sell();
    }
    void fundBuy(){
        stock1.buy();
        stock2.buy();
        stock3.buy();
    }
};
登入後複製

何時使用外觀模式?

在設計初期,應該要有意識的將不同的兩層分開。

在開發階段,子系統往往因為不斷的重構演化而變得越來越複雜。

在維護一個遺留的大型系統時,可以將原始系統高度複雜的程式碼或設計粗糙的程式碼以比較簡單清晰的介面讓新系統與Facade物件互動。

以上就是C++設計模式淺識外觀模式的內容,更多相關內容請關注PHP中文網(www.php.cn)!


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!