[图解]企业应用架构模式2024新译本讲解05-表模块2

1
00:00:00,970 --> 00:00:03,440
接下来,我们就来看案例了

2
00:00:03,690 --> 00:00:09,260
案例跟上一次事务脚本案例是一样的

3
00:00:11,210 --> 00:00:13,130
也是收入确认这个案例

4
00:00:14,460 --> 00:00:15,580
这是表结构

5
00:00:15,790 --> 00:00:24,470
跟我们前面那个是类似的,产品表

6
00:00:25,260 --> 00:00:27,880
这个是合同,收入确认表

1
00:00:01,830 --> 00:00:02,940
不一样的地方

2
00:00:03,150 --> 00:00:06,790
就是这个地方

3
00:00:07,360 --> 00:00:12,060
前面那个案例里面

4
00:00:12,550 --> 00:00:13,900
收入确认的地方

5
00:00:13,910 --> 00:00:16,140
它用了一个复合主键

6
00:00:17,040 --> 00:00:18,780
这里的话

7
00:00:19,040 --> 00:00:20,530
就没有,书里面没有用这个

8
00:00:20,790 --> 00:00:23,610
后面我们演示后来的代码的时候

9
00:00:24,430 --> 00:00:26,790
也没有用,直接主键就完了

10
00:00:26,800 --> 00:00:27,910
其实这是更好的

11
00:00:28,560 --> 00:00:31,820
像复合主键这种搞复杂了

12
00:00:31,830 --> 00:00:36,230
每个对象都有一个标识

13
00:00:36,320 --> 00:00:38,310
这个标识本来就应该没有什么意义的

14
00:00:38,320 --> 00:00:42,040
你不用去考虑怎么来构造标识

15
00:00:42,050 --> 00:00:43,400
用哪个字段好

16
00:00:43,410 --> 00:00:45,040
它本来就不应该属于

17
00:00:45,050 --> 00:00:47,550
这个里面的某个字段

18
00:00:48,070 --> 00:00:51,320
像前面的,拿一个签约日期

19
00:00:51,650 --> 00:00:52,760
不是,确认日期

20
00:00:53,370 --> 00:00:55,760
作为主键一部分,这是不对的

21
00:00:55,770 --> 00:00:58,380
因为这里面都是有领域含义的

22
00:00:59,450 --> 00:01:00,560
这本身就应该是一个

23
00:01:00,570 --> 00:01:04,560
无任何意义的,随机的标识,才对的

1
00:00:01,330 --> 00:00:04,160
接下来,我们就来看一下代码

2
00:00:06,900 --> 00:00:08,050
这代码同样的

3
00:00:08,060 --> 00:00:10,190
我先用UModel

4
00:00:10,200 --> 00:00:13,130
把代码逆转成

5
00:00:13,140 --> 00:00:18,880
类图、序列图,先看一下结构,还有相互的协作

6
00:00:19,740 --> 00:00:21,020
然后我们再运行一下

7
00:00:25,670 --> 00:00:27,570
逆转得到的类图是这样的

8
00:00:28,640 --> 00:00:34,240
这个类图我稍微调整了一下样式

9
00:00:35,430 --> 00:00:39,940
比之前截的图要好看一点,看得清楚一点

10
00:00:41,460 --> 00:00:45,090
你看,这是一个表模块的超类

11
00:00:45,810 --> 00:00:52,770
上面定义了,表模块构造器

12
00:00:52,780 --> 00:00:54,660
两个参数

13
00:00:54,670 --> 00:00:57,680
一个是数据集

14
00:00:58,110 --> 00:00:59,140
一个是表名

15
00:01:01,920 --> 00:01:08,270
然后,这里继承它

16
00:01:08,840 --> 00:01:12,570
构造器这里

17
00:01:14,030 --> 00:01:16,570
这里是一个

18
00:01:19,100 --> 00:01:20,780
数据集的参数

19
00:01:21,680 --> 00:01:22,120
就可以了

20
00:01:22,830 --> 00:01:24,770
然后把表名作为参数

21
00:01:24,940 --> 00:01:28,380
它是调用上面基类的

22
00:01:29,230 --> 00:01:34,190
超类的构造器,这个地方

23
00:01:36,820 --> 00:01:38,880
然后下面就是一样了

24
00:01:38,890 --> 00:01:40,160
这是主程序

25
00:01:40,570 --> 00:01:42,000
也是一个控制台的程序

26
00:01:42,750 --> 00:01:44,380
然后这里面不一样的

27
00:01:44,390 --> 00:01:46,230
就是产品类型

28
00:01:46,550 --> 00:01:51,080
之前是直接嵌在产品里面

29
00:01:51,090 --> 00:01:53,650
作为一个字符串存在的

30
00:01:53,660 --> 00:01:56,900
现在这里把它单独分出来

31
00:01:56,910 --> 00:01:58,260
作为一个枚举的类型

32
00:02:01,670 --> 00:02:02,590
下面这些方法

33
00:02:02,600 --> 00:02:07,310
跟前面事务脚本的方法是差不多的

34
00:02:07,700 --> 00:02:12,130
就多了一个什么,这里多了一个Allocate

35
00:02:14,360 --> 00:02:16,220
自己写了一个

36
00:02:17,050 --> 00:02:22,590
没有用之前Money类的方法

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

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

相关文章

WHAT - Typescript 中 structural-type-system 结构类型系统

目录 一、结构类型系统与名义类型系统二、结构类型系统的基本概念三、泛型和结构类型系统四、类型别名和接口的兼容性五、总结 一、结构类型系统与名义类型系统 TypeScript 中的结构类型系统(Structural Type System)是 TypeScript 的核心特性之一&…

解决uniapp里的onNavigationBarSearchInputClicked不生效

如何在uniapp里使用onNavigationBarSearchInputClicked。 1、在page.json里配置 "pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首页","navigationStyle": "cu…

【Android】手动下载gradle插件包,解决gradle插件包下载不全问题。

问题描述 拉取别人的项目时,因为网络问题gradle插件包一直下载不全,一直build。 解决方案: 打开gradle>wrapper文件下gradle-wrapper.properties,查看需要下载gradle-7.2-bin.zip。 distributionBaseGRADLE_USER_HOME distr…

cmd窗口输出内容乱码问题

出现这样的问题是因为编码格式和解码格式不一样导致的,cmd窗口的默认解码格式为GBK,如想修改cmd默认编码格式可以按照下面步骤操作:打开cmd窗口输入:chcp 65001 65001指的是utf-8编码如果不清楚编码对应的 页面编码是是多少&#…

国内外知名的低代码开发平台下载地址

以下是国内外几款低代码开发平台的列表,包含了下载地址、适应操作系统、是否可以独立部署、优点、缺点以及是否包含流程引擎的信息。 平台名称 下载地址 适应操作系统 是否可以独立部署 优点 缺点 是否包含流程引擎 国内平台 阿里云宜搭 阿里云官网 跨平台…

文件批量重新命名

实用 如果你想忽略原文件的后缀,将所有文件(除了 .py 文件)都重命名为以 .jpg 结尾,并且使用序号来命名,你可以使用以下脚本: # renamefile.py import os# 定义原始目录和起始序号 original_directory &q…

C++操纵符用法

C中的操纵符&#xff08;Manipulators&#xff09;是用于格式化输入输出的特殊工具。它们可以在输出流中控制各种格式&#xff0c;如设置字段宽度、精度、填充字符等。以下是一些常用的操纵符及其用法&#xff1a; setw(int width): 设置字段宽度为width个字符。 cout <<…

访问github加速方法续集dev-sidecar

访问github加速方法续集dev-sidecar dev-sidecar 重要提醒 ------------------------------重要提醒1--------------------------------- 注意&#xff1a;由于electron无法监听windows的关机事件&#xff0c;开着ds情况下直接重启电脑&#xff0c;会导致无法上网&#xff0c…

【网络层】IP地址基础 与 子网掩码

文章目录 IP地址基础IP地址概念IP地址分类公网地址和私网地址 子网掩码子网掩码作用默认子网掩码网络地址、主机地址、广播地址 IP地址基础 IP地址概念 IP地址&#xff1a;IP Address 在网络中&#xff0c;通信节点都需要有一个IP地址 IP地址以点分十进制表示&#xff0c;有…

建设人工智能平台,主流GPU卡选型分析

国内外主流GPU卡性能分析&#xff01;2024&#xff01; 大模型兴起助推算力需求激增 2024年&#xff0c;深度学习与人工智能技术飞速跃进&#xff0c;Transformer、GPT-3等大模型在自然语言处理、图像识别、语音合成等领域大放异彩&#xff0c;开启AI新纪元。其庞大的参数与数…

Matlab操作Excel筛选指定数据的对应数据

Matlab中在表格中寻找指定汉字&#xff0c;并返回其所在行数&#xff0c; 将该行数的另一列提取出来。 目录 一、前言 二、直接在命令行输出 三、保存筛选数据excel 一、前言 源数据excel&#xff1a; 指定汉子&#xff1a;买&#xff0c;得到下面数据&#xff1a; 二、直接…

微信小程序埋点监听方案

场景&#xff1a;运营小程序&#xff0c;需要根据系统访问情况来做决策时。 后台&#xff1a;开发可配置监听页面路径&#xff0c;参数&#xff0c;事件名称等&#xff0c;类似以下格式&#xff0c;进行json保存。 组装数据接口返回给前端缓存到本地&#xff0c;然后进行校验编…

2024华为OD机试真题-机器人搬砖-C++(C卷D卷)

题目描述 机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头, 要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格, 机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损…

Vue3 自定义Hooks函数的封装

1、如何理解vue3中的自定义hooks 在Vue 3中&#xff0c;自定义hooks允许开发者封装和重用逻辑代码。自定义hooks是使用Composition API时创建的函数&#xff0c;这些函数可以包含任意的组合逻辑&#xff0c;并且可以在多个组件之间共享。 自定义hooks通常遵循这样的命名约定&…

MyBatis延迟加载缓存分页逆向工程

文章目录 延迟加载概述步骤 缓存一级缓存介绍原理 二级缓存介绍 设置缓存对象策略原理开启步骤属性解释是否使用一级缓存 分页插件使用步骤 逆向工程介绍搭建使用增删修改查 延迟加载 概述 延迟加载本身是依赖于多表查询的 延迟加载中返回值要选择resultMap返回的结果一定是D…

数学建模 —— 插值与拟合(1)

一、matlab画图 1.1 plot&#xff08;二维图形&#xff09; plot(x) —— 缺省自变量绘图格式 plot(x,y) —— 基本格式&#xff0c;以y(x)的函数关系作出直角坐标图&#xff0c;如果y为nm的矩阵&#xff0c;则以x为自变量&#xff0c;作出m条曲线 plot(x1,y1,x2,y2,…,xn,…

python循环引用和解决方法

目录 1. 延迟导入 2. 使用 importlib 3. 重构代码 4. 使用类型提示的前向引用 在Python中&#xff0c;两个文件循环引用的问题通常发生在模块相互依赖导致的导入循环。这种情况下&#xff0c;解决循环引用的方法有几种&#xff0c;以下是一些常见的解决方案&#xff1a; 1…

神经网络算法详解与前沿探索

神经网络算法详解与前沿探索 随着人工智能技术的迅猛发展&#xff0c;神经网络成为机器学习领域的重要组成部分&#xff0c;广泛应用于图像识别、自然语言处理和推荐系统等。本文将详细探讨神经网络的基本原理、结构、训练过程及其应用实例&#xff0c;并扩展至更多相关领域和…

基于标准库的STM32的外部中断EXTI

毕设已经告一段落了&#xff0c;接下来准备开始整理一下毕设中用到的知识与技术细节&#xff0c;今天整理的是STM32从编码器获取数据的方式-----外部中断&#xff08;EXTI&#xff09;&#xff1a; 外部中断分为四个硬件相关外设&#xff0c;GPIO/AFIO/EXTI/NVIC&#xff08;E…

jQuery前端开发入门图片:探索图片操作的奥秘与技巧

jQuery前端开发入门图片&#xff1a;探索图片操作的奥秘与技巧 在前端开发中&#xff0c;图片的处理与展示往往占据着举足轻重的地位。jQuery&#xff0c;作为一款流行的JavaScript库&#xff0c;为我们提供了丰富的图片操作方法和技巧。本文将通过四个方面、五个方面、六个方…