设计模式(十三):外观模式

设计模式(十三):外观模式

定义:

​ ·为子系统中一组接口提供一个一致的界面,即定义一个高层接口,增加子系统的易用性,隐藏系统的复杂性

​ ·这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

主要解决:

​ ·降低访问复杂系统的内部系统的复杂度,简化客户端与之的接口

如何解决:

​ ·客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好,即为复杂的模块或子系统提供外界访问的模块

以代码为例:

​ 类图关系如下

在这里插入图片描述

一、创建三个接口SubsystemA、B、C

#include <iostream>

class SubsystemA
{
public:
  void suboperation()
  {
    std::cout << "Subsystem A method" << std::endl;
    // ...
  }
  // ...
};

class SubsystemB
{
public:
  void suboperation()
  {
    std::cout << "Subsystem B method" << std::endl;
    // ...
  }
  // ...
};

class SubsystemC
{
public:
  void suboperation()
  {
    std::cout << "Subsystem C method" << std::endl;
    // ...
  }
  // ...
};

二、创建Facade类

Facade将客户端请求委托给适当的子系统对象和更易于使用的统一接口

class Facade
{
public:
  Facade() : subsystemA(), subsystemB(), subsystemC() {}
  
  void operation1()//子系统1
  {
    subsystemA->suboperation();
    subsystemB->suboperation();
    // ...
  }
  
  void operation2()//子系统2
  {
    subsystemC->suboperation();
    // ...
  }
  // ...
  
private:   //私有类成员为上面定义的三个接口
  SubsystemA *subsystemA;
  SubsystemB *subsystemB;
  SubsystemC *subsystemC;
  // ...
};

三、main函数调用

int main()
{
  Facade *facade = new Facade();
  
  facade->operation1();
  facade->operation2();
  delete facade;
  
  return 0;
}

运行结果:

Subsystem A method
Subsystem B method
Subsystem C method

这样就简单实现了一个外观模式

外观模式优缺点

优点:

​ 1、减少系统相互依赖。

​ 2、提高灵活性。

​ 3、提高了安全性。

缺点:

​ 1、不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值