[入门到放弃]设计模式-笔记

模块化设计 20240448

  • 模块不包含数据,通过实例的指针,实现对实例的操作;
  • 唯一包含的数据是用于管理这些模块的侵入式链表
  • 模块只负责更具定义的数据结构,执行对应的逻辑,实现不同实例的功能;

参考资料

  • 使用模块时,必须专注于模块的使用,而必须有意忽视模块的实现逻辑,必须要在心理上信任模块。简而言之,必须把模块视作黑盒子!

“Service模型”

  • 模块的头文件,接口头文件遵循“最小信息公开原则”,即,该头文件中只存放用户使用模块最少最少所必须知道的信息。
  • 类型定义、宏定义、函数和全局变量声明都应该首先放置在对应的源代码中(或是后面会提到的模块内私有的接口头文件中);当且仅当我们发现用户要使用模块的某一功能必须要用到某一信息时,才“极不情愿”地、“抠门”的、且尽可能将其它能剥离和隐藏的信息剥离开后,放置到接口头文件中。
  • 每一个模块内部都会有一个专门的头文件用于实现对模块的配置:该头文件用于“从模块外部向模块内部”输入配置信息;app_cfg.h
    在这里插入图片描述
  • 多个C源文件之间需要共享一些非公开的私有信息:双下划线为前缀的接口头文件(比如,叫做__common.h),并视其为模块的私有财产。

在这里插入图片描述

  • 模块的嵌套,父模块的接口头文件包含子模块的接口头文件

层次模块

  • 模块的内部不仅对外是不可见的,本质上也不依赖于模块的外部环境;
  • 模块自成一体(队列、内存池、加密模块、数据校验模块),平时用起来就好比是平铺在桌面上的积木一样——它们平起平坐,缺乏立体的层次关系。
  • 另外一类模块,他们本身需要由众多的子模块拼接而成——这里的拼接可不是简单的平面拼接——它需要一个层次关系

设备的故障如何分级

第一章

面向对象

  • 文件充当封装边界
  • UML中的继承 ,使用封闭箭头表示,
  • 状态机,在状态中等待,指导发生某个事件;
  • 同步事件,发送者等待事件被处理的结果;

第二章

设计模式

  • 设计模式是对经常出现的问题的通解;
  • 位域的问题:编译器的字节不固定,是否是原子操作;标量的位域强制转换;

硬件代理

硬件适配器

中介者模式

观察者模式 发布-订阅

去抖模式

中断模式

轮训模式

第三章 资源并发

  • 顺序动作的例子

循环执行模式

静态优先级模式## 临界区模式

收尾调用模式

队列模式

#############################

UML

  • 对象的“包含”关系,表明他们是“共生死”,一起构建,一起析构;
  • 组合/部分 关系 APO (a part of) --实心菱形,是“共生死”
  • 包含/内容/共享 关系 — 空心菱形
  • 从领域概念找到类:概念–概念之间的联系

用例-行为需求

  • 用例表达了系统提供用户(actor)的服务,一个用例表达一个服务
  • 用例在系统的众多"系统功能"中,属于直接提供用户服务的部分(具有用户感知的功能),其他功能只是用户感知不到;
  • 用例类的实例化是一种场景(scenario);一般类的实例化是对象;
  • 用例描述该服务的名称以及返回的信息类型,解释“是什么”
  • 用例描述服务过程中,用户与系统之间“如何”交互;
  • 用例描述用户的角色,“是谁”
  • 用例关系:“包含”-一个用例包含了“包含用例”;“扩展”-一个基础用例会在一定条件下触发“扩展用例”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539717.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP/IP协议—UDP

TCP/IP协议—UDP UDP协议UDP通信特点 UDP头部报文UDP检验 UDP协议 用户数据传输协议 (UDP,User Datagram Protocol) 是一种无连接的协议,提供了简单的数据传输服务,不保证数据的顺序以及完整性。应用层很多通信协议都基于UDP进行传输&#x…

[当人工智能遇上安全] 13.威胁情报实体识别 (3)利用keras构建CNN-BiLSTM-ATT-CRF实体识别模型

《当人工智能遇上安全》系列将详细介绍人工智能与安全相关的论文、实践,并分享各种案例,涉及恶意代码检测、恶意请求识别、入侵检测、对抗样本等等。只想更好地帮助初学者,更加成体系的分享新知识。该系列文章会更加聚焦,更加学术…

最新常见的图数据库对比,选型,架构,性能对比

图数据库排名 地址:https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性SPARQLCypherGremlinPGQLG-CORE图模式匹配查询语法CGPCGPCGP(无可选)1CGPCGP语义子图同态、包 2无重复边、包 2子…

大唐极简史

唐朝(618年-907年),是中国历史上一个强盛的朝代,以其疆域辽阔、政治稳重、经济繁荣、文化繁荣而著称。唐朝的开国皇帝是李渊,他建立了一个强大的中央集权政府,使得唐朝成为当时世界上最繁荣的国家之一。 唐…

vmware虚拟机补救

更新了虚拟机里面工具和资料,进行了磁盘整理和压缩,虚拟机运行进不去系统了。 网站找的修复方法均不可行。补救措施:利用DiskGenius.exe(要用高版本不然复制的时候就知道了) DG1342.rar - 蓝奏云 加载虚拟硬盘 2008x…

最新微信支付商家转账到零钱各场景怎样开通?

商家转账到零钱是什么? 商家转账到零钱是企业付款到零钱的升级版,它的功能是,如果系统需要对用户支付费用,比如发放佣金、提成、退款等,可以直接转账到用户的微信零钱。这个功能在 2022 年 5 月 18 日之前叫做企业付款…

2024年MathorCup数模竞赛B题问题一二三+部分代码分享

inputFolderPath E:\oracle\images\; outputFolderPath E:\oracle\process\; % 获取文件夹中所有图片的文件列表 imageFiles dir(fullfile(inputFolderPath, *.jpg)); % 设置colorbar范围阈值 threshold 120; % 遍历每个图片文件 for i 1:length(imageFiles) % 读…

个人网站制作 Part 18 提升用户体验:添加页面404错误处理 | Web开发项目

文章目录 👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 添加404错误处理页面🔨创建404错误处理页面🔧步骤 1: 在项目根目录创建404错误处理页面🔧步骤 2: 添加404错误处理页面内容 &#x1f…

数据结构复习指导之绪论(数据结构的基本概念)

文章目录 绪论: 考纲内容 知识框架 复习提示 1.数据结构的基本概念 1.1基本概念和术语 1.数据 2.数据元素 3.数据对象 4.数据类型 5.数据结构 1.2数据结构三要素 1.数据的逻辑结构 2.数据的存储结构 3.数据的运算 绪论: 考纲内容 算法时…

计算机网络----第十天

配置vlan 广播风暴的含义: 含义:设备发出的广播帧在广播域中传播,占用网络带宽,降低设备性能 隔离广播的方式: 方式:用路由器来隔离广播 用VLN隔离广播 vlan的定义: 定义:虚拟…

13-pyspark的共享变量用法总结

目录 前言广播变量广播变量的作用 广播变量的使用方式 累加器累加器的作用累加器的优缺点累加器的使用方式 PySpark实战笔记系列第四篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第一篇)11-pyspark的RDD的变换与动作算子总结(PySpark实战笔记系列第二篇))12-pysp…

海外媒体宣发:这7个旅游业媒体套餐击中宣传痛点-华媒舍

旅游业如何有效宣传自身成为了一个重要的问题。众多旅游企业却面临着宣传痛点,即无法将优质内容传达给目标受众。近期,出现了7个旅游业媒体套餐,它们被称为解决宣传痛点的突破性方案。本文将介绍这7个旅游业媒体套餐,并说明它们为…

一篇实操vitrualbox虚拟机根目录扩容(详细,实操陈功)

一篇实操vitrualbox虚拟机根目录扩容(详细,实操陈功) 创建虚拟介质 第一步、 第二步、 第三步、一直下一步,直到下面的页面 分配空间到更目录下 第一步、 第二步、查看创建的物理磁盘 lsblk第三步、查看原本磁盘可用空间 df …

掌握现代 C++:Lambda 在 C++14、C++17 和 C++20 中的演变

深入研究Lambda 在 C14、C17 和 C20 中的演变 一、背景二、C14 中的 Lambda2.1、默认参数2.2、模板参数2.3、广义捕获2.4、从函数返回 lambda 三、C17 中的 Lambda四、C20 中的 Lambda总结 一、背景 Lambda 是现代 C 最受欢迎的功能之一。自从在 C 11 中引入以来,它…

Day 23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇

修剪二叉搜索树 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 ​ 最直接的想法&#xff0…

【CSS】SVG图片属性及修改颜色

最近的开发中遇到了SVG不能修改颜色的问题,以前是直接用,没有研究过,现在搞个笔记记录下 SVG的属性: width:设置最终SVG图片的宽度height:设置最终SVG图片的高度viewbox:视区,在svg上截取一块&#xff0c…

【C++学习】C++智能指针:提高代码安全与性能的利器

文章标题 智能指针的提出智能指针概念及使用RAII 智能指针的原理C库多种智能指针详解版本一:std::auto_ptr(C98)1. std::auto_ptr 使用2. std::auto_ptr 原理3. std::auto_ptr 模拟实现 版本二:unique_ptr (C11)1. unique_ptr 的使…

Unity之PUN实现多人联机射击游戏的优化(Section 3)

目录 💣一、准备工作 💣二、生成弹头脚本的编写 💣三、实现发射和伤害同步 手雷都加了在给狗剩加个火箭筒不过分吧。效果看GIF动图,分别是单机和联机的效果。 添加火箭筒依旧是在原有的基础上更改,我查看火箭筒模型…

基于STC12C5A60S2系列1T 8051单片机的LCD1602显示中文英文数字小数字库字符自定义字符的应用

基于STC12C5A60S2系列1T 8051单片机的LCD1602显示中文英文数字小数字库字符自定义字符的应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍LCD1602字符型液晶显示器介…

策略模式:灵活调整算法的设计精髓

在软件开发中,策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。通过定义一系列算法,并将每个算法封装起来,策略模式使得算法可以互换使用,这使得算法可以独立于使用它们的客户。本文将详细介绍策略模式的…