加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 1 外观模式
    • 2 实例
    • 总结
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

《大话设计模式》解读08-外观模式

10/20 11:25
540
阅读需 6 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

上篇文章,介绍了《大话设计模式》的第10章——模板方法。

本篇,来介绍《大话设计模式》的第12章——外观模式。并通过C++代码实现实例代码的功能。

注:第11章介绍的是迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用

1 外观模式

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

外观模式的类图如下:

    Facade:外观类,对子系统进行管理,对接客户端。SubSystem:子系统类,实现子系统的功能,处理外观类指派的任务。

2 实例

背景:书中小故事,股市行情很火,小菜的一些同事在炒股票,但大多是刚入市的,什么都不懂,其中一个叫顾韵梅的同事,在大大好的牛市行情里,却连连亏损。哈,典型的新股民特征。还是要找懂行的人,基金经理。

题目:用代码的形式来实现自己操作股票以及基金经理操作股票。

2.1 版本一:自己操作股票

版本一的实现就是定义一些股票类,提供买入和卖出的接口,然后客户自己操作买入和卖出。

2.1.1 股票类

股票类的实现如下,这里以股票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 主函数

首先,实例化对应的股票,

然后,就可以调用对应的买入和卖出的接口了。

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

代码运行效果如下:

2.2 版本二:基金经理操作股票

版本一的实现比较简单,是客户自己操作股票,对于新手股民,可能一顿操作猛如虎,一看收益二百五。如果通过购买基金,由基金经理来操作股票,收益结果可能不同。

修改后的代码如下:

// 基金
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-代理模式

相关推荐

电子产业图谱

控制科学与工程硕士,日常分享单片机、嵌入式、C/C++、Linux等学习经验干货~