C++设计模式之外观模式(十)

设计模式C++实现(7)——外观模式、组合模式 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大 阅读详情

Facade Pattern

简介

  外观模式(Facade Pattern)属于结构型模式,它隐藏了系统的复杂性,并向客户提供一个可以访问系统的接口。为子系统中的一组接口提供了一个统一的访问接口,这样使得子系统更加容易的被使用或者访问。
使用场景:

  1. 为了一个复杂的模块或子系统提供统一的外界访问接口;
  2. 子系统相对独立,外界对子系统的访问属于黑盒操作;

UML图:
UML图

代码

#include <iostream>
#include <memory>

class SubSystem_A {
public:
    void do_someting(){
        std::cout << "This is sub system A" << std::endl;
    }
}; //SubSystem_A

class SubSystem_B {
public:
    void do_someting(){
        std::cout << "This is sub system B" << std::endl;
    }
}; //SubSystem_B

class SubSystem_C {
public:
    void do_someting(){
        std::cout << "This is sub system C" << std::endl;
    }
}; //SubSystem_C

class SubSystem_D {
public:
    void do_someting(){
        std::cout << "This is sub system D" << std::endl;
    }
}; //SubSystem_D


class Facade{
public:
    Facade(){
        subsystem_a.reset();
        subsystem_b.reset();
        subsystem_c.reset();
        subsystem_d.reset();
    }

    void method_a(){
        subsystem_a->do_someting();
        subsystem_b->do_someting();
    }

    void method_b(){
        subsystem_c->do_someting();
        subsystem_d->do_someting();
    }

private:
    std::shared_ptr<SubSystem_A> subsystem_a;
    std::shared_ptr<SubSystem_B> subsystem_b;
    std::shared_ptr<SubSystem_C> subsystem_c;
    std::shared_ptr<SubSystem_D> subsystem_d;
}; //Facade

int main(){
void facade_pattern_test(){
    std::shared_ptr<Facade> facade = std::make_shared<Facade>();
    facade->method_a();
    facade->method_b();
}
突破编程_C++_设计模式(外观模式) C++ 设计模式:外观模式 阅读详情

相关推荐

C++ 设计模式-外观模式

C++ 设计模式,外观模式

ox0080的博客 1300

C++设计模式之工厂模式(三)

目录简单工厂模式简介说明code工厂方法模式简介说明code抽象工厂模式简介说明code   工厂模式属于创建型模式,可分为三类,简单工厂模式、工厂方法模式、抽象工厂模式;这三类模式是由易到难,由简到繁的。下面简单阐述一下这三种工厂模式 简单工厂模式 简介说明   简单工厂模式是工厂模式中最简单的一类;它是一个工厂生产多种不同的产品;对外隐藏类产品的实现细节,只暴露需要的产品类型。客户提供需要产品的产品类型给到工厂,就会返回相应的产品。客户只需要关心产品的基类类,不需要知道获取到的是哪一个子类。   使用场

CFH1021的博客 414

广义标签多伯努利滤波器(GLMB):多目标跟踪中的动态身份维护理论与算法解析

目标集表示Xx1l1x2l2xNlNX{(x1​l1​x2​l2​xN​lN​)}xi∈Rdxi​∈Rd为目标状态(如位置、速度),li∈Lli​∈L为唯一标签(可数无限集,如自然数序列),N 为目标数(允许N0N=0N0,即空集)。GLMB 通过广义化标签多伯努利分布,将多目标跟踪从 “状态估计” 提升至 “动态身份 - 状态联合建模”,成为复杂场景下精准跟踪的核心技术。

qq_44965657的博客 1598

C++设计模式之适配器模式(六)

adapter pattern简介代码 简介   适配器模式(adapter pattern)是一种结构型模型,会将一种接口转换为另一种需要的接口,以便使用。适配器模式有两种,一是类模式适配器;另一种是对象模式适配器。 类模式适配器: 对象模式适配器:   优点: 1. 屏蔽具体实现的方法,实现了依赖倒转;2.把不方便使用的接口转换为统一接口,方便使用。 代码 class Target { public: Target() = default; virtual ~Target() = d

CFH1021的博客 188

Mendix 开发实践指南|Mendix平台概览

低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。

多年搬砖的经验分享... 4413

紫光同创国产FPGA学习之Fabric Debugger

文章从紫光同创参考书拷贝过来的。因为我用的时候,看了一下就会用了(纯粹只是会用了,默认和xilinx的一样),没有看教程。先更新点文本,后面在写程序。 一、      软件简介 Fabric Debugger是一款界面化的FPGA芯片调试工具,能够针对公司目前以及未来的FPGA芯片进行在线调试。本软件直接与JtagHub、DebugCore交互,能够实时的配置目标FPGA、设置触发条件并且观测结...

my_share的专栏 6391

两种语言实现设计模式(C++和Java)(十:外观模式)

外观模式: 为子系统中的一组接口定义一个一致的界面,外观模式提供了一个高层接口,这个接口使得这一子系统更加容易被使用;对于复杂的系统,系统为客户提供一个简单的接口,把复杂的实现过程封装起来,客户不需要了解系统内部的细节。 主要解决:客户不需要了解系统内部复杂的细节,只需要一个接口;系统入口。 如何解决:客户不直接与系统耦合,而是通过外观类与系统耦合。 关键代码:客...

aozhimen9773的博客 200

非华为电脑也能用!华为电脑管家完美安装教程来了

GitHub 上有一个开源项目 ​****​,专门解决“非华为设备无法安装华为电脑管家”的问题。它通过智能模拟 + DLL 劫持技术,绕过官方对硬件型号的检测,让你在联想、戴尔、华硕甚至 DIY 主机上也能流畅使用华为电脑管家!⭐ 项目已获 ​700+ Stars​,社区活跃,持续更新,兼容性优秀!科技不该有围墙。如果你成功在非华为电脑上跑起了 PCManager,欢迎在评论区晒出你的设备型号 + 使用体验!也别忘了把这篇推文分享给同样“眼馋”华为生态的朋友 ~📱 ​关注我们。

程序员朱永胜 4920

我与C++设计模式(十)——外观模式

facade设计模式sjhi

guozhengdong的专栏 465

[STC32G144K246入门第六步]DAC驱动

本文摘要介绍了STC32G144微控制器内置的12位DAC模块特性与应用。该芯片集成双通道独立DAC,需通过内部运放缓冲后从P0.7/P5.0引脚输出,支持音频处理、波形生成等应用场景。重点阐述了DAC的R-2R梯形网络工作原理、关键性能指标(12位分辨率、转换速度等)及编程配置方法,包括频率设置、寄存器操作和运放引脚配置。文中还提供了32点正弦波表示例和初始化代码,强调参考电压稳定性对输出精度的重要影响。

sinat_58149788的博客 140

【AI智能体】AI 编程 + 飞书CLI + Skills 重塑开发新范式实战操作详解

AI 编程 + 飞书CLI + Skills 重塑开发新范式实战操作详解

congge 3666

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

外观模式(Facade Pattern)是一种结构性设计模式,它为复杂的子系统提供一个简单的接口。通过外观模式,客户端通过外观类与子系统进行交互,外观类将客户端的请求委托给适当的子系统对象,从而实现功能的调用。这样的设计隐藏了子系统的复杂性,使得客户端与子系统之间的耦合度降低。

慢慢记录,慢慢更新。 1880

银河麒麟V10等保加固清单:安全基线配置一篇搞定(附逐项检查表)

通过限制使用SSH直接以root身份登录,禁用公钥登录的方式加强SSH服务的安全性。更改SSH默认端口可在一定程度上防止被黑客使用大批量扫描方式攻击。通过修改SSH的配置文件限制可以使用SSH服务远程管理的主机。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 817

设计模式之外观模式

外观模式(Facade Pattern)是一种结构型设计模式。它为子系统中的一组接口提供了一个统一的高层接口,这个接口使得子系统更容易被使用。就像是为复杂的子系统搭建了一个简单的 “门面”,用户只需要与这个门面进行交互,而不需要了解子系统内部的复杂结构和交互细节。

FallingGod的博客 2514

21天学会PCIe专栏(4.3)--PCIe配置方法

通过本节的学习,你应该对PCIe配置方法有了更深入的了解。软件配置方法包括直接访问和间接访问,可以通过特定的I/O指令或系统调用进行配置。硬件配置方法包括通过BIOS/UEFI设置和跳线设置,可以根据需要修改PCIe设备的配置参数。

xiaoheshang_123的博客 722

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

设计模式-外观模式-Facade Pattern

例如,在Java微服务项目中,外观模式可以用于代码分层,其中Facade作为对外暴露API接口的一层,Controller作为API的实现类,Service为核心业务服务。在这些语言中,外观模式的实现方式可能会有所不同,但核心思想是一致的:提供一个高级的接口,简化对子系统的操作。这种模式隐藏了子系统的细节,使得客户端代码可以通过一个简单的接口来访问子系统的功能,从而降低了客户端与复杂子系统之间的耦合度。外观模式是一个强大的工具,可以帮助简化复杂系统的接口,但也应该谨慎使用,以避免引入不必要的抽象层次。

wesigj的博客 2834

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

举个例⼦,假设你正在编写的⼀个模块⽤来处理⽂件读取、解析、存储,我们可以将这个过程拆成三部分,然后创建⼀个外观类,将⽂件系统操作、数据解析和存储操作封装在外观类中,为客户端提供⼀个简化的接⼝,如果后续需要修改⽂件处理的流程或替换底层⼦系统,也只需在外观类中进⾏调整,不会影响客户端代码。外观模式通过提供⼀个简化的接⼝,隐藏了系统的复杂性,降低了客户端和⼦系统之间的耦合度,客户端不需要了解系统的内部实现细节,也不需要直接和多个⼦系统交互,只需要通过外观接⼝与外观对象进⾏交互。, 也被称为“⻔⾯模式”,是⼀种。

K1_uestc的博客 1455

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【C++】外观模式

外观模式(Facade Pattern)是一种【结构型】设计模式,它为复杂的子系统提供一个统一的接口,使客户端只需通过这个简单的接口就能访问子系统,而无需关心子系统内部的复杂实现。这种模式简化了客户端与子系统之间的交互,降低了系统的耦合度。

AAADiao的博客 1088

C++设计模式——外观模式(Facade Pattern)

C++设计模式——外观模式(Facade Pattern) 微信公众号:幼儿园的学霸 目录 文章目录C++设计模式——外观模式(Facade Pattern)目录前言定义定义与特点结构代码示例总结相关设计模式优缺点使用场景参考资料 前言 不得不说,外观模式在开发过程中运用频率非常高,尤其现在各种第三方SDK“充斥”在我们的开发中,这些SDK大多会使用外观模式。通过一个外观类使的整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也能够对用户屏蔽很多实现细节。外观模式也是我们封装API的常用

leonardohaig的博客 1826

C++设计模式-外观模式

目录 基本概念 代码与实例 基本概念 外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 增加外观Facade可以提供一个简单的接口,减少它们之间的依赖; 为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade...

IT1995的博客 5279

基于C++的《Head First设计模式》笔记——外观模式

本文介绍了外观模式及其应用,通过封装Jsoncpp库的序列化和反序列化操作,简化了接口使用。外观模式为子系统提供统一的高级接口,降低系统耦合度。同时阐述了最少知识原则,强调减少对象间不必要的交互,但需权衡其带来的额外包装类成本。最后对比了适配器、装饰者和外观模式的区别:适配器改变接口,装饰者扩展功能,外观简化接口。设计模式的选择应结合实际需求,权衡维护成本与性能影响。

Yu_Lijing的博客 703

C++设计模式结构型模式———外观模式

外观模式定义一组高层接口或者说提供子系统的一个到多个简化接口让子系统更容易使用以及让操作变得更直接,让客户端和子系统实现解耦。当子系统发生改变时,一般只需要修改外观类而基本不需要修改客户端代码(虽然这种修改有点违背开闭原则)。外观模式提供的接口给客户端调用带来了很大的方便,使客户端无须关心子系统的工作细节,但这些接口也许缺乏灵活性,当然,如果客户端认为有必要对子系统进行最灵活的控制,那么依然可以绕过外观模式类而直接使用子系统。

无敌岩雀的博客 1694

[设计模式C++]外观模式

;Facade模式也叫外观模式。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供-个一致的简单的界面。这个-致的简单的界面被称作 facade.

weixin_44972997的博客 725

C++设计模式(7)——外观模式

C++ 外观模式

伍粟的博客 2149
上一篇: C++设计模式之组合模式(九)
下一篇: 10 大经典排序算法之C++实现
一杯盐水
博客等级 码龄10年 62粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值