9.python设计模式【外观模式】
-
内容:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用。
-
角色:
- 外观(facade)
- 子类系统(subsystem classes)
-
UML图

-
举个例子:
需求:电脑由硬盘、内存、cpu组成,现在只需要按开机键所有组件都要开机,按关机键所有组件都要关机。
class CPU:def run(self):print("CPU开始运行")def stop(self):print("CPU停止运行")class Disk:def run(self):print("硬盘开始运行")def stop(self):print("硬盘停止运行")class Memory:def run(self):print("内存通电")def stop(self):print("内存断电")# facade
class Computer:def __init__(self):self.cpu=CPU()self.disk=Disk()self.memory=Memory()def run(self):self.cpu.run()self.disk.run()self.memory.run()def stop(self):self.cpu.stop()self.disk.stop()self.memory.stop()
# Client
computer=Computer()
computer.run()
computer.stop()
输出结果:
CPU开始运行
硬盘开始运行
内存通电
CPU停止运行
硬盘停止运行
内存断电
- 优点:
- 减少系统相互依赖
- 提高了灵活性
- 提高了安全性
相关文章:
9.python设计模式【外观模式】
内容:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用。 角色: 外观(facade)子类系统(subsystem classes) UML图 举…...
Webpack5 CopyPlugin的作用
在Webpack 5中,CopyPlugin是一个插件,用于将文件或目录从源位置复制到构建目录中。它的作用是帮助开发人员在构建过程中将静态文件(如图片、字体等)直接复制到输出目录,而无需经过任何处理。 CopyPlugin并不是必须的&…...
kafka服务端允许生产者发送最大消息体大小
1、kafka config服务端配置文件server.properties server.properties中加上的message.max.bytes配置,我目前设置为5242880,即5MB,可以根据实际情况增大。 message.max.bytes5242880 在生产者端配置max.request.size,这是单个消息…...
台阶型Nim游戏博弈论
台阶型Nim游戏 题目 https://www.acwing.com/problem/content/894/ 现在,有一个 n n n 级台阶的楼梯,每级台阶上都有若干个石子,其中第 i i i 级台阶上有 a i a_i ai 个石子( i ≥ 1 i \ge 1 i≥1)。 两位玩家轮流操作,每…...
NestJS 的 中间件 学习
基本概念 中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求和响应对象。在程序中我们可以让多个中间件串起来一起使用,当多个中间件一起使用时我们可以使用next()调用下一个中间件。 中间件主要是可以实现如下功能: 执行任何代码更改请…...
搭建自己第一个golang程序
概念: golang 和 java有些类似,配置好环境就可以直接编写运行了;这里分两种: 一.shell模式 创建一个go类型的文件 往里面编写代码 二.开发工具模式 这里的开发工具 我选用goland package mainimport "fmt"func mai…...
Mysql加锁过程
1、背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问…...
财经界杂志财经界杂志社财经界编辑部2023年第19期目录
《财经界》投稿邮箱:cnqikantg126.com(注明投稿“《财经界》”) ●崔编辑Q Q :695548262 微信号:f99832970 名刊名著_国内外名刊名著 财经名刊名著 李少鹏 ;王海蕴; 6-7 发改委专线 六方面发力 看中国经济形势,既要看准当…...
Linux常用命令——dpkg-split命令
在线Linux命令查询工具 dpkg-split Debian Linux中将大软件包分割成小包 补充说明 dpkg-split命令用来将Debian Linux中的大软件包分割成小软件包,它还能够将已分割的文件进行合并。 语法 dpkg-split(选项)(参数)选项 -S:设置分割后的每个小文件最…...
常见的二十种软件测试方法详解
一.单元测试(模块测试) 单元测试是对软件组成单元进行测试。其目的是检验软件组成单位的正确性。测试对象是:模块。 对模块进行测试,单独的一个模块测试,属于静态测试的一类 测试阶段:编码后或者编码前&…...
Python(一)
要做到坚韧不拔,最要紧的是坚持到底。——陀思妥耶夫斯基 2023 6 14~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --根据你自己的操作系统下载对应的。 -- pyhton 文档 --交互方式 使用的工具 --如何启动工具 -- 交互式方式一般在数据分析中…...
git pull无效,显示 * branch master -> FETCH_HEADAlready up to date. pull无效解决方法
报错情况 本地文件夹中删除文件后,git pull无效。显示如下: **** MINGW64 ~/****/haha (master) $ git pull origin master From https://gitee.com/****/haha* branch master -> FETCH_HEAD Already up to date.解决 方法一 命令…...
SK5代理与socks5代理
第一部分:SK5代理与socks5代理的原理与功能 SK5代理 SK5代理是一种加密代理技术,其工作原理主要包括以下几个关键步骤: 代理服务器接收客户端请求;客户端与代理服务器之间建立加密连接;代理服务器将客户端的请求转发…...
【【51单片机红外遥控小风车】】
51单片机红外遥控小风车 今天结束了51单片机的学习,明天开始学习stm32 我是学习江科大的视频一步一步完成的 ,他讲的非常好,非常好 特别通俗易懂 学习复刻他的作品我也自己创作了一些 但是现在暂时脱离这块板子了 以后可能会更新一个应用51单…...
如何连接远程服务器?快解析内内网穿透可以吗?
如今我们迎来了数字化转型的时代,众多企业来为了更好地推动业务的发展,常常需要在公司内部搭建一个远程服务器。然而,对于企业员工来说,在工作过程中经常需要与这个服务器进行互动,而服务器位于公司的局域网中…...
【云边有个小卖部】上新《探秘Linux》第三章 Linux 软件包管理器 yum
🕺作者: 主页 我的专栏C语言从0到1C初阶C进阶数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我…...
【深度学习】【Image Inpainting】Free-Form Image Inpainting with Gated Convolution
模型:DeepFillv2 (CVPR’2019) 论文:https://arxiv.org/abs/1806.03589 代码:https://github.com/JiahuiYu/generative_inpainting 文章目录 效果AbstractIntroductionRelated WorkAutomatic Image InpaintingGuided Image Inpainting and Sy…...
游戏引擎UE如何革新影视行业?创意云全面支持UE云渲染
虚幻引擎UE(Unreal Engine)作为一款“殿堂级”的游戏引擎,占据了全球80%的商用游戏引擎市场,但如果仅仅将其当做游戏开发的工具,显然是低估了它的能力。比如迪士尼出品的电视剧《曼达洛人》、电影《狮子王》等等都使用…...
DB-GPT:强强联合Langchain-Vicuna的应用实战开源项目,彻底改变与数据库的交互方式
今天看到 蚂蚁科技 Magic 开源的DB-GPT项目,觉得创意很好,集成了当前LLM的主流技术,主要如下 Langchain: 构建在LLM之上的应用开发框架HuggingFace: 模型标准,提供大模型管理功能Vicuna: 一个令GPT-4惊艳的开源聊天机…...
STM32CubeMX v6.9.0 BUG:FLASH_LATENCY设置错误导致初始化失败
背景 今天在调试外设功能时,发现设置了使用外部时钟之后程序运行异常,进行追踪调试并与先前可以正常运行的项目进行对比之后发现这个问题可能是由于新版本的STM32CubeMX配置生成代码时的BUG引起的。 测试环境 MCU: STM32H750VBT6 STM32CubeIDE: Versi…...
异数OS 10万人同服同屏技术的豆包造谣纠偏专用
异数OS 10万人同服同屏技术的豆包造谣纠偏专用 文章目录异数OS 10万人同服同屏技术的豆包造谣纠偏专用看看字节豆包造的谣只有空连接空逻辑只测静态,极低交互带宽要求及其离谱硬件天价没有分布式弹性不能扩容容错总结看看字节豆包造的谣 只有空连接空逻辑 这一般是…...
告别校园网登录页!实测用UDP 53端口“曲线救国”上网的几种姿势与风险提示
校园网络优化:提升连接效率的合法实践指南 校园网络作为师生日常学习研究的重要基础设施,其稳定性和访问效率直接影响教学科研质量。许多用户在使用过程中会遇到认证页面频繁弹出、连接不稳定等问题,这通常与网络架构设计和流量管理策略有关。…...
dupeguru重复文件查找终极指南:3种扫描模式与高效文件管理完全教程
dupeguru重复文件查找终极指南:3种扫描模式与高效文件管理完全教程 【免费下载链接】dupeguru Find duplicate files 项目地址: https://gitcode.com/gh_mirrors/du/dupeguru 你是否曾经因为电脑磁盘空间不足而烦恼?面对成千上万的文件࿰…...
【Frida Android】实战篇:Frida-Trace 进阶追踪——JNI 函数调用栈与参数解析
1. 深入理解JNI函数调用栈追踪 第一次用Frida-Trace追踪JNI函数时,最让我困惑的就是如何看清整个调用链路。记得当时分析一个金融类APP,发现它调用了十几个so库,函数调用关系像蜘蛛网一样复杂。后来通过反复实践,终于摸索出一套完…...
金蝶k3软件常用基础SQL数据表
金蝶软件常用基础SQL数据表SQL数据库 1、系统表 t_tabledescription2、字段表 t_fielddescription3、基础资料表(版本:10.3) t_item 其中fitemclassid值表示1-客户;2-部门;3-职员;4-商品;5-仓位…...
告别手动配置:利用Ansible Playbook自动化部署华为GaussDB数据库集群
从零到集群:Ansible Playbook全自动部署华为GaussDB实战指南 在数据库运维领域,重复性手动部署堪称效率杀手。我曾亲眼见证某金融科技团队为部署测试环境GaussDB集群,三名资深DBA耗费整整两天时间——从系统调优、依赖安装到配置文件修改&…...
Mysql 支持的复制类型
MySQL 的复制可以从两个维度进行分类,分别对应数据一致性和日志格式。下面分别说明。 一、按数据一致性分类 复制类型 机制 优点 缺点 适用场景 异步复制 主库提交事务后立即返回,不等待从库确认 性能最高,主库无延迟 主库故障可能丢失已提交事务 对一致性要求不高的场景(如…...
非原生微信小程序逆向:H5页面调试与授权劫持技巧
非原生微信小程序逆向工程实战:H5调试与授权机制深度解析 微信生态中存在着大量采用H5页面套壳实现的"伪原生"小程序,这类应用往往隐藏着更灵活的技术实现和潜在的安全风险。本文将深入探讨这类特殊小程序的逆向分析方法,从技术原理…...
G-Helper:华硕笔记本色彩配置一键恢复指南
G-Helper:华硕笔记本色彩配置一键恢复指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: https://…...
TripoSR:0.5秒从单图到3D模型,开源3D重建的革命性工具
TripoSR:0.5秒从单图到3D模型,开源3D重建的革命性工具 【免费下载链接】TripoSR 项目地址: https://gitcode.com/GitHub_Trending/tr/TripoSR TripoSR是一款由Tripo AI与Stability AI联合开发的开源单图像3D重建模型,能够在短短0.5秒…...
