加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1 外觀模式
    • 2 實例
    • 總結
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

《大話設計模式》解讀08-外觀模式

10/20 11:25
273
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

上篇文章,介紹了《大話設計模式》的第10章——模板方法。

本篇,來介紹《大話設計模式》的第12章——外觀模式。并通過C++代碼實現(xiàn)實例代碼的功能。

注:第11章介紹的是迪米特法則:如果兩個類不必彼此直接通信,那么這兩個類就不應當發(fā)生直接的相互作用。如果其中一個類需要調(diào)用另一個類的某一個方法的話,可以通過第三者轉發(fā)這個調(diào)用

1 外觀模式

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

外觀模式的類圖如下:

    Facade:外觀類,對子系統(tǒng)進行管理,對接客戶端。SubSystem:子系統(tǒng)類,實現(xiàn)子系統(tǒng)的功能,處理外觀類指派的任務。

2 實例

背景:書中小故事,股市行情很火,小菜的一些同事在炒股票,但大多是剛入市的,什么都不懂,其中一個叫顧韻梅的同事,在大大好的牛市行情里,卻連連虧損。哈,典型的新股民特征。還是要找懂行的人,基金經(jīng)理。

題目:用代碼的形式來實現(xiàn)自己操作股票以及基金經(jīng)理操作股票。

2.1 版本一:自己操作股票

版本一的實現(xiàn)就是定義一些股票類,提供買入和賣出的接口,然后客戶自己操作買入和賣出。

2.1.1 股票類

股票類的實現(xiàn)如下,這里以股票1、股票2和國債1進行示例:

// 股票1
class Stock1
{
public:
    void Buy()
    {
        printf("股票1買入n");
    }   
    
    void Sell()
    {
        printf("股票1賣出n");
    }     
};

// 股票2
class Stock2
{
public:
    void Buy()
    {
        printf("股票2買入n");
    }   
    
    void Sell()
    {
        printf("股票2賣出n");
    }     
};

// 國債1
class NationDebt1
{
public:
    void Buy()
    {
        printf("國債1買入n");
    }   
    
    void Sell()
    {
        printf("國債1賣出n");
    }     
};

2.1.2 主函數(shù)

首先,實例化對應的股票,

然后,就可以調(diào)用對應的買入和賣出的接口了。

int main()
{
    Stock1 stock1;
    Stock2 stock2;
    NationDebt1 nationDebt1;
    
    stock1.Buy();
    stock2.Buy();
    nationDebt1.Buy();
    
    stock1.Sell();
    stock2.Sell();
    nationDebt1.Sell();
    
    return 0;
}

代碼運行效果如下:

2.2 版本二:基金經(jīng)理操作股票

版本一的實現(xiàn)比較簡單,是客戶自己操作股票,對于新手股民,可能一頓操作猛如虎,一看收益二百五。如果通過購買基金,由基金經(jīng)理來操作股票,收益結果可能不同。

修改后的代碼如下:

// 基金
class Fund
{
public:
    void Buy()
    {
        printf("基金操作買入:n");
        m_stock1.Buy();
        m_stock2.Buy();
        m_nationDebt1.Buy();
    }   
    
    void Sell()
    {
        printf("基金操作賣出:n");
        m_stock1.Sell();
        m_stock2.Sell();
        m_nationDebt1.Sell();
    }   
    
private:
    Stock1 m_stock1;
    Stock2 m_stock2;
    NationDebt1 m_nationDebt1;     
};

int main()
{
    Fund fund;
    
    fund.Buy();
    
    fund.Sell();
    
    return 0;
}

運行效果如下:

總結

本篇介紹了設計模式中的外觀模式,并通過購買股票和基金的實例,使用C++編程,來演示外觀模式的使用。

文章推薦

《大話設計模式》解讀01-簡單工廠模式

《大話設計模式》解讀02-策略模式

《大話設計模式》解讀03-裝飾模式

《大話設計模式解讀》04-代理模式

相關推薦

電子產(chǎn)業(yè)圖譜

控制科學與工程碩士,日常分享單片機、嵌入式、C/C++、Linux等學習經(jīng)驗干貨~