大话设计模式C++版本-08-外观模式

简介: 大话设计模式C++版本-08-外观模式

概述

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

优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。

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


应用场景

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


一般步骤

1.写多个子类且每个子类都有自己的方法;

class SubSystemOne
{
public:
   void MethonOne()
   {
    cout << "子系统方法一" << endl;
   }
};
class SubSystemTwo
{
public:
   void MethonTwo()
   {
    cout << "子系统方法二" << endl;
   }
};

2.另写一个外观类,实例化多个子类,且实现多个子类的方法组合。

class Facade  // 外观类-封装了子系统的接口
{
private:
  SubSystemOne   *One;
  SubSystemTwo   *Two;
public:
  Facade()
  {
    One = new SubSystemOne();
    Two = new SubSystemTwo();
  }
  void MethonA()
  {
    cout << endl << "方法组A" << endl;
    //...
  }
  void MethonB()
  {
    cout << endl << "方法组B" << endl;
    //...
  }
};

具体实例完整代码

//08Facade.cpp
#include <iostream>
using namespace std;
class SubSystemOne
{
public:
  void MethonOne()
  {
    cout << "子系统方法一" << endl;
  }
};
class SubSystemTwo
{
public:
  void MethonTwo()
  {
    cout << "子系统方法二" << endl;
  }
};
class SubSystemThree
{
public:
  void MethonThree()
  {
    cout << "子系统方法三" << endl;
  }
};
class SubSystemFour
{
public:
  void MethonFour()
  {
    cout << "子系统方法四" << endl;
  }
};
class Facade  // 外观类-封装了子系统的接口
{
private:
  SubSystemOne   *One;
  SubSystemTwo   *Two;
  SubSystemThree *Three;
  SubSystemFour  *Four;
public:
  Facade()
  {
    One = new SubSystemOne();
    Two = new SubSystemTwo();
    Three = new SubSystemThree();
    Four = new SubSystemFour();
  }
  void MethonA()
  {
    cout << endl << "方法组A" << endl;
    One->MethonOne();
    Two->MethonTwo();
    Four->MethonFour();
  }
  void MethonB()
  {
    cout << endl << "方法组B" << endl;
    Two->MethonTwo();
    Three->MethonThree();
  }
};
int main()
{
  Facade *facade = new Facade();
  facade->MethonA();
  facade->MethonB();
  return 0;
}

参考资料

《大话设计模式》

如果对你有帮助的话,记得点赞收藏,如果有什么遗漏的或者有什么体会,请在评论告诉我,好东西记得分享 ^ _ ^

目录
相关文章
|
2月前
|
设计模式 API 数据安全/隐私保护
探索设计模式的魅力:外观模式简化术-隐藏复杂性,提供简洁接口的设计秘密
外观模式是一种关键的设计模式,旨在通过提供一个简洁的接口来简化复杂子系统的访问。其核心价值在于将复杂的内部实现细节封装起来,仅通过一个统一的外观对象与客户端交互,从而降低了系统的使用难度和耦合度。在软件开发中,外观模式的重要性不言而喻。它不仅能够提高代码的可读性、可维护性和可扩展性,还能促进团队间的协作和沟通。此外,随着业务需求和技术的发展,外观模式能够适应变化,通过修改外观对象来灵活调整客户端与子系统之间的交互方式。总之,外观模式在软件设计中扮演着举足轻重的角色,是构建高效、稳定且易于维护的软件系统的关键
93 1
探索设计模式的魅力:外观模式简化术-隐藏复杂性,提供简洁接口的设计秘密
|
2月前
|
设计模式 Java
23种设计模式,外观模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】外观模式(Facade Pattern)是一种使用频率非常高的结构型设计模式,其核心思想是为子系统中的一组接口提供一个一致的界面。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简而言之,外观模式就是客户端与复杂子系统之间的一个简单而统一的接口
51 3
|
2月前
|
C++
二叉树进阶面试题(精华总结)【C++版本】
二叉树进阶面试题(精华总结)【C++版本】
|
5天前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 外观模式
js设计模式【详解】—— 外观模式
12 2
|
15天前
|
Linux vr&ar C语言
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
54 2
|
9天前
|
设计模式 Java
Java设计模式:外观模式之优雅门面(九)
Java设计模式:外观模式之优雅门面(九)
|
11天前
|
设计模式 Java
Java设计模式之外观模式详解
Java设计模式之外观模式详解
|
11天前
|
设计模式
外观模式-大话设计模式
外观模式-大话设计模式
8 0
|
2月前
|
设计模式 开发框架 算法
C++中的设计模式:基本概念与应用
C++中的设计模式:基本概念与应用
30 2
|
1月前
|
设计模式 算法 关系型数据库
设计模式第七讲-外观模式、适配器模式、模板方法模式详解
系统要求所有的数据库帮助类必须实现ISqlHelp接口,面向该接口编程,如SQLServerHelp类。 此时第三方提供了一个新的MySql的帮助类(假设是dll,不能修改),它的编程规范和ISqlHelp不兼容,这个时候就需要引入适配器类,使二者能相互兼容。
149 0