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

news/2024/11/28 9:33:53/

模块化设计 20240448

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

参考资料

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

“Service模型”

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

在这里插入图片描述

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

层次模块

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

设备的故障如何分级

第一章

面向对象

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

第二章

设计模式

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

硬件代理

硬件适配器

中介者模式

观察者模式 发布-订阅

去抖模式

中断模式

轮训模式

第三章 资源并发

  • 顺序动作的例子

循环执行模式

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

收尾调用模式

队列模式

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

UML

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

用例-行为需求

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

http://www.ppmy.cn/news/1418579.html

相关文章

QCustomPlot移植android后实现曲线放大缩小

一.问题 1.QCustomPlot在windows系统上可以支持鼠标左键按下平移拖动,滚轮放大缩小,矩形放大功能; 但是到了android触摸屏上无法识别鼠标滚轮事件,同时控件也不识别多点触控的放大缩小,这就导致想要实现放大缩小比较困难。 本文会给出两种解决方法。 二.QCustomPlot介绍…

NUC11更新 ESXi 8.0U2B 安装过程

1、下载 镜像名称:VMware-VMvisor-Installer-8.0U2b-23305546.x86_64.iso下载地址:https://docs.vmware.com/tw/VMware-vSphere/8.0/rn/vmware-vsphere-80-release-notes/index.html 2、制作镜像启动盘 2、查看镜像版本信息 3、启动设备安装系统 1、启…

MES实施优势有哪些?MES制造执行系统的主要内容

各个行业之间也开始进入到了激烈的竞争当中,很多企业为了能够有效提升企业竞争力,都会通过提升自身实力的方式来提升竞争力。一些制造业也会在经营过程当中使用到MES系统,那么,mes系统的优势有哪些呢? 1、优化企业现场…

GNU Autotools 套件详解

GNU Autotools 是一套用于构建和安装软件的工具,它包括了一系列的工具,如 `autoscan`, `aclocal`, `autoconf`, `autoheader`, `automake` 等。 这些工具的目的是简化软件的编译过程,使得软件能够在不同的操作系统和硬件平台上编译和运行。 历史背景 GNU Autotools 的历史…

SpringCloudAlibaba-整合sleuth和zipkin(六)

目录地址&#xff1a; SpringCloudAlibaba整合-CSDN博客 一、整合sleuth 1.引入依赖 在需要追踪的微服务中引入依赖&#xff0c;user、order、product <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter…

异构超图嵌入的图分类 笔记

1 Title Heterogeneous Hypergraph Embedding for Graph Classification&#xff08;Xiangguo Sun , PictureHongzhi Yin , PictureBo Liu , PictureHongxu Chen , PictureJiuxin Cao , PictureYingxia Shao , PictureNguyen Quoc Viet Hung&#xff09;【WSDM 2021】 2 Co…

【QT入门】Qt自定义控件与样式设计之自定义QLineEdit实现搜索编辑框

往期回顾 【QT入门】Qt自定义控件与样式设计之qss的加载方式-CSDN博客 【QT入门】Qt自定义控件与样式设计之控件提升与自定义控件-CSDN博客 【QT入门】Qt自定义控件与样式设计之鼠标相对、绝对位置、窗口位置、控件位置-CSDN博客 【QT入门】Qt自定义控件与样式设计之自定义QLin…

Linux 目录结构与基础查看命令

介绍 目录结构如下 /bin&#xff1a;存放着用户最经常使用的二进制可执行命令&#xff0c;如cp、ls、cat等。这些命令是系统管理员和普通用户进行日常操作所必需的。 /boot&#xff1a;存放启动系统使用的一些核心文件&#xff0c;如引导加载器&#xff08;bootstrap loader…