当前位置: 首页 > news >正文

Linux C++ 054-设计模式之外观模式

Linux C++ 054-设计模式之外观模式

本节关键字:Linux、C++、设计模式、外观模式
相关库函数:

概念

外观模式(Facade),亦称“过程模式”。主张按照描述和判断资料来评价课程,关键的活动是在课程实施的全过程中进行观察和搜集意见,以了解人们对课程的不同看法。这种模式不限于检查教学的成果,重视描述和判断教学过程中各种复杂、动态的现象和事物。

结构

Facade
这个外观类为子系统提供一个共同的对外接口

Clients
客户对象通过一个外观接口读写子系统中各接口的数据资源。

使用场景

在以下情况下可以考虑使用外观模式:

1、设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。

2、开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。

3、维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。

优点

1、实现了子系统与客户端之间的松耦合关系。

2、客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。

代码示例

// 为系统的一组接口提供一致的界面,使用户使用起来更加方便
// 外观模式的适用情况:
//        设计初期,有意识地将不同的层分离,层与层之间建立外观模式
//        开发阶段,子系统越来越复杂,使用外观模式创建一个简单的调用接口
//        现有的系统可能已经非常难以维护和扩展,但很多功能由十分重要,可以为其创建一个外观类,使得新系统可以方便的与其交互
// 优点:
//        实现了子系统和客户端松耦合的关系
//        客户端屏蔽了子系统的组件,减少了客户端所需处理的数据,使得子系统使用起来更加容易
//        更好的划分了设计层次,使后期的维护更加方便
// 实例:
//        当开电脑时,需要启动主机,显示器,外部设备等一系列的子部件,我们封装一个外观类,
//        调用外观类的启动接口可以将这一系列的子部件全部打开,这个外观类就好比电脑的开机按钮。关闭的思想也是同样
//
// 抽象控件类,提供接口
class Control
{
public:virtual void start() = 0;virtual void shutdown() = 0;
};
// 子控件,主机
class Host : public Control
{
public:void start() override {cout << "Host start" << endl;}void shutdown() override {cout << "Host shutdown" << endl;}
};
// 子控件,显示屏
class LCDDisplay : public Control
{
public:void start() override {cout << "LCD Display start" << endl;}void shutdown() override {cout << "LCD Display shutdown" << endl;}
};
// 子控件,外部设备
class Peripheral : public Control
{
public:void start() override {cout << "Peripheral start" << endl;}void shutdown() override {cout << "Peripheral shutdown" << endl;}
};
class ComputerFacade
{
public:void start() {m_host.start();m_display.start();m_peripheral.start();cout << "Computer start" << endl;}void shutdown() {m_host.shutdown();m_display.shutdown();m_peripheral.shutdown();cout << "Computer shutdown" << endl;}
private:Host m_host;LCDDisplay m_display;Peripheral m_peripheral;
};
int main_Facade()
{ComputerFacade computer;computer.start();computer.shutdown();return 0;
}
/* 输出结果:
Host start
LCD Display start
Peripheral start
Computer start
Host shutdown
LCD Display shutdonw
Peripheral shutdown
Computer shutdown
*/

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode日记(38)字母异位词分组
  • C++数组
  • 【密码学】消息认证
  • 九、Linux二进制安装ElasticSearch集群
  • 【JavaScript】解决 JavaScript 语言报错:Uncaught SyntaxError: Unexpected token
  • Qt QWebSocket网络编程
  • Nginx -Web服务器/反向代理/负载均衡
  • Selenium WebDriver中的显式等待与隐式等待:深入理解与应用
  • LabVIEW学习-LabVIEW储存Excel表格
  • 新版k8s拉取镜像失败问题
  • Python基础学习笔记——异常
  • python实现openssl的EVP_BytesToKey及AES_256_CBC加解密算法
  • “存算分离“和“湖仓一体“
  • Ansible 安装及使用说明
  • (补充)IDEA项目结构
  • [LeetCode] Wiggle Sort
  • Android Studio:GIT提交项目到远程仓库
  • canvas 高仿 Apple Watch 表盘
  • CSS盒模型深入
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript设计模式系列一:工厂模式
  • Linux CTF 逆向入门
  • spring security oauth2 password授权模式
  • 百度地图API标注+时间轴组件
  • 从输入URL到页面加载发生了什么
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 记一次删除Git记录中的大文件的过程
  • 力扣(LeetCode)56
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​configparser --- 配置文件解析器​
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • #QT(一种朴素的计算器实现方法)
  • #传输# #传输数据判断#
  • (1)(1.9) MSP (version 4.2)
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (javascript)再说document.body.scrollTop的使用问题
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)springcloud实战之config配置中心
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .Net 4.0并行库实用性演练
  • .NET Core 成都线下面基会拉开序幕
  • .NET MVC之AOP
  • .Net mvc总结
  • .net 获取某一天 在当月是 第几周 函数
  • .net/c# memcached 获取所有缓存键(keys)