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

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停止运行
硬盘停止运行
内存断电

  • 优点:
    • 减少系统相互依赖
    • 提高了灵活性
    • 提高了安全性
http://www.lryc.cn/news/99355.html

相关文章:

  • Webpack5 CopyPlugin的作用
  • kafka服务端允许生产者发送最大消息体大小
  • 台阶型Nim游戏博弈论
  • NestJS 的 中间件 学习
  • 搭建自己第一个golang程序
  • Mysql加锁过程
  • 财经界杂志财经界杂志社财经界编辑部2023年第19期目录
  • Linux常用命令——dpkg-split命令
  • 常见的二十种软件测试方法详解
  • Python(一)
  • git pull无效,显示 * branch master -> FETCH_HEADAlready up to date. pull无效解决方法
  • SK5代理与socks5代理
  • 【【51单片机红外遥控小风车】】
  • 如何连接远程服务器?快解析内内网穿透可以吗?
  • 【云边有个小卖部】上新《探秘Linux》第三章 Linux 软件包管理器 yum
  • 【深度学习】【Image Inpainting】Free-Form Image Inpainting with Gated Convolution
  • 游戏引擎UE如何革新影视行业?创意云全面支持UE云渲染
  • DB-GPT:强强联合Langchain-Vicuna的应用实战开源项目,彻底改变与数据库的交互方式
  • STM32CubeMX v6.9.0 BUG:FLASH_LATENCY设置错误导致初始化失败
  • K8s-资源管理(二)
  • 脉冲信号测试应如何选择示波器带宽?
  • OpenCV DNN模块推理YOLOv5 ONNX模型方法
  • ThirdAI 的私有和可个性化神经数据库:增强检索增强生成(第 3/3 部分)
  • C# 解决TCP Server 关不掉客户端连接的问题
  • JS判断类型的方法和对应的局限性(typeof、instanceof和Object.prototype.toString.call()的用法)
  • mongostat跟踪Mongodb运行的状态
  • 华为数通HCIA-数通网络基础
  • 【设计模式】详解单例设计模式(包含并发、JVM)
  • 监控和可观察性在 DevOps 中的作用!
  • 论文分享:PowerTCP: Pushing the Performance Limits of Datacenter Networks