C++设计模式之——外观模式

外观模式

概念

外观模式是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,使客户端可以更容易地使用子系统。

使用场景

外观模式的使用场景可包含以下的几点,但是不限于下面这些情况。

1.简化复杂系统:当一个系统非常复杂,由许多子系统组成时,可以使用外观模式来提供一个简单的接口,隐藏系统的复杂性,使客户端更容易使用系统。

2.封装遗留代码:在现有的系统中,可能存在一些老旧的代码或者接口,可以使用外观模式来封装这些遗留代码,使其对客户端透明,同时可以逐步进行系统重构。

3.提供统一接口:当一个系统提供了多个接口,而客户端只需要使用其中的一部分时,可以使用外观模式来提供一个统一的接口,简化客户端的使用。

4.降低耦合度:外观模式可以降低系统中各个模块之间的耦合度,使得系统更易于维护和扩展。

总的来说,外观模式适用于需要简化复杂系统、封装遗留代码、提供统一接口以及降低系统模块之间耦合度的场景。

示例

在C++中实现外观模式,通常需要定义一个外观类,该类提供对子系统中的一组类的访问。外观类可以隐藏子系统的内部细节,并简化客户端与子系统之间的交互。

下面通过编程的示例来加深理解外观模式。

示例代码

cpp 复制代码
#include <iostream>  
  
// 子系统中的类  
class SubsystemA {  
public:  
    void operationA() {  
        std::cout << "SubsystemA operation" << std::endl;  
    }  
};  
  
class SubsystemB {  
public:  
    void operationB() {  
        std::cout << "SubsystemB operation" << std::endl;  
    }  
};  
  
// 外观类  
class Facade {  
public:  
    Facade() {  
        subsystemA = new SubsystemA();  
        subsystemB = new SubsystemB();  
    }  
  
    ~Facade() {  
        delete subsystemA;  
        delete subsystemB;  
    }  
  
    void performOperations() {  
        subsystemA->operationA();  
        subsystemB->operationB();  
    }  
  
private:  
    SubsystemA* subsystemA;  
    SubsystemB* subsystemB;  
};  
  
// 客户端代码  
int main() {  
    Facade facade;  
    facade.performOperations(); // 调用子系统的操作  
    return 0;  
}

运行结果

总结

外观模式本质是提供一个外观类,将一些子类进行了封装,提供了统一对外可供访问的接口。降低了各个子类之间的耦合性,隐匿了子类的具体实现。

相关推荐
HellowAmy几秒前
我的C++规范 - 随机时间点
开发语言·c++·代码规范
啊阿狸不会拉杆26 分钟前
《计算机操作系统》第七章 - 文件管理
开发语言·c++·算法·计算机组成原理·os·计算机操作系统
lixinnnn.1 小时前
字符串拼接:Cities and States S
开发语言·c++·算法
csdn_aspnet1 小时前
C++常用算法深度解析:从STL到现代C++的算法艺术
c++
kk”1 小时前
C++智能指针
开发语言·c++
清酒难咽2 小时前
算法案例之回溯法
c++·经验分享·算法
小王努力学编程2 小时前
LangChain——AI应用开发框架(核心组件2)
linux·服务器·c++·人工智能·python·langchain·信号
CC.GG2 小时前
【C++】异常
java·jvm·c++
王老师青少年编程3 小时前
2023年12月GESP真题及题解(C++八级): 大量的工作沟通
c++·题解·真题·gesp·csp·八级·大量的工作沟通
郝学胜-神的一滴3 小时前
深入理解TCP协议:数据格式与核心机制解析
linux·服务器·网络·c++·网络协议·tcp/ip