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

模块化设计 20240448

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

参考资料

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

“Service模型”

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

在这里插入图片描述

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

层次模块

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

设备的故障如何分级

第一章

面向对象

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

第二章

设计模式

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

硬件代理

硬件适配器

中介者模式

观察者模式 发布-订阅

去抖模式

中断模式

轮训模式

第三章 资源并发

  • 顺序动作的例子

循环执行模式

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

收尾调用模式

队列模式

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

UML

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

用例-行为需求

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【热门话题】常见分类算法解析

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 常见分类算法解析1. 逻辑回归(Logistic Regression)2. 朴…

4.Godot图片素材的获取和编辑

游戏开发中经常遇到图片素材的需求 1. 图片素材的准备 术语:Sprite 精灵,游戏开发中指一张图片来源不明的图片,切勿在商业用途使用,以免引起版权风险。 1. 在学习阶段,可以百度或者从一些资源网站获取,这…

ViT-DeiT:用于乳腺癌组织病理图像分类的集成模型

两种预训练Vision Transformer模型的集成模型,即Vision Transformer和数据高效视觉Transformer(Data-Efficient Image Transformer)。此集成模型是一种软投票模型。 近年来,乳腺癌的分类研究主要集中在超声图像分类、活检数据分类…

QT常用控件

常用控件 控件概述QWidget 核⼼属性核⼼属性概览enabledgeometrywindowTitlewindowIconwindowOpacitycursorfonttoolTipfocusPolicystyleSheet 按钮类控件Push ButtonRadio ButtionCheck Box 显⽰类控件LabelLCD NumberProgressBarCalendar Widget 输⼊类控件Line EditText Edi…

AI领域的最新动态:大型语言模型的崛起、AI芯片竞争与创新应用

AI领域的最新动态:大型语言模型的崛起、AI芯片竞争与创新应 在最近的AI新闻中,有几个重要的发展值得关注: 1. **大型语言模型的发布和更新**: - Google在其Google Cloud Next活动上宣布,Gemini 1.5现已在180多个国家/…

(学习日记)2024.04.15:UCOSIII第四十三节:任务消息队列

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

# 达梦sql查询 Sql 优化

达梦sql查询 Sql 优化 文章目录 达梦sql查询 Sql 优化注意点测试数据单表查询 Sort 语句优化优化过程 多表关联SORT 优化函数索引的使用 注意点 关于优化过程中工具的选用,推荐使用自带的DM Manage,其它工具在查看执行计划等时候不明确在执行计划中命中…

MySQL 主从复制部署(8.0)

什么是主从数据库 主从数据库是一种数据库架构模式,通常用于提高数据库的性能、可用性和可伸缩性。 它包括两种类型的数据库服务器: 1)主数据库(Master):主数据库是读写数据的主要数据库服务器。所有写操…

前端小技巧之轮播图

文章目录 功能htmlcssjavaScript图片 设置了一点小难度,不理解的话,是不能套用的哦!!! (下方的圆圈与图片数量不统一,而且宽度是固定的) 下次写一些直接套用的,不整这些麻…

SpringBoot配置优先级

配置优先级排序(从高到低) 1)命令行参数 2)java系统属性 3)application.properties 4)application.yaml 5)application.ymlSpringBoot的系统属性配置和命令行参数配置 1、cmd端进行配置 1&am…

边缘计算网关究竟是什么呢?它又有什么作用呢?-天拓四方

在数字化时代,信息的传输与处理变得愈发重要,而其中的关键节点之一便是边缘计算网关。这一先进的网络设备,不仅扩展了云端功能至本地边缘设备,还使得边缘设备能够自主、快速地响应本地事件,提供了低延时、低成本、隐私…

基本的数据类型在16位、32位和64位机上所占的字节大小

1、目前常用的机器都是32位和64位的,但是有时候会考虑16位机。总结一下在三种位数下常用的数据类型所占的字节大小。 数据类型16位(byte)32位(byte)64位(byte)取值范围char111-128 ~ 127unsigned char1110 ~ 255short int / short222-32768~32767unsigned short222…

Go程序设计语言 学习笔记 第十一章 测试

1949年,EDSAC(第一台存储程序计算机)的开发者莫里斯威尔克斯在他的实验室楼梯上攀登时突然领悟到一件令人震惊的事情。在《一位计算机先驱的回忆录》中,他回忆道:“我突然完全意识到,我余生中的很大一部分时…

SpringCloudalibaba之Nacos的配置管理

Nacos的配置管理 放个妹子能增加访问量? 动态配置服务 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。 配置中心化管…

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

交换机端口安全技术和链路聚合技术 1、端口隔离技术: 用于在同vlan内部隔离用户; 同一隔离组端口不能通讯,不同隔离组端口可以通讯; 2、链路聚合技术: 含义:把连接到同一台交换机的多个物理端口捆绑为一个逻辑端口…

武林风云之一个shell同时维护多个设备

仅以此文纪念linux中国 小y最近真的颓废了,马上就三十了,一下班整个人跟个废物一样,躺在住处刷B站,太颓废了。哎,我想这今年就收手博客了,后续不再更新。但是人不能这样,人需要和懒惰做斗争&…

Python学习笔记25 - 一些案例

1. 输出金陵前五钗 2. 向文件输出信息 3. 打印彩色字 4. print函数、进制转换 5. 猜数游戏 6. 输出ASCII码对应的字符 7. 计算100~999之间的水仙花数 8. 千年虫数组的索引及其值 9. 星座zip dict 10. 12306车次信息 11. 字符串的格式化 12. 手动抛出异常 13. 计算圆的面积和周长…

杰发科技AC7840——CAN通信简介(4)_过滤器设置

0. 简介 注意:过滤器最高三位用不到,因此最高位随意设置不影响过滤器。 1. 代码分析 注意设置过滤器数量 解释的有点看不懂 详细解释...也看不大懂 Mask的第0位是0,其他位都是1(就是F?),那就指定了接收值就是这个数,…

版本控制工具Git的使用

1、Git的基本概念和使用 1、Git是什么? ● Git: 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 ● GitHub: 全球最大的面向开源及私有软件项目的托管平台,免费注册并且可以免费托管开源代码。 ● GitLab:与GitHub类似&a…

ChatGLM3初体验

mac本地化部署ChatGLM3 写在前面环境准备1. python环境2. 安装第三方依赖torch3.下载模型 代码准备1.clone代码 run效果 写在前面 建议直接去看官方文档 https://github.com/THUDM/ChatGLM3?tabreadme-ov-file 环境准备 1. python环境 python -V ## 3.11.42. 安装第三方依…