[图解]企业应用架构模式2024新译本讲解15-行数据入口

news2024/11/25 9:50:27

1
00:00:01,060 --> 00:00:02,770
数据算完了

2
00:00:03,070 --> 00:00:07,720
接下来就是我们这一节的主要内容了

3
00:00:08,500 --> 00:00:13,630
应用服务调用第三方的,Email

4
00:00:13,640 --> 00:00:18,280
包括集成应用的接口来发Email

5
00:00:18,290 --> 00:00:20,080
或者发布到集成应用上面

6
00:00:20,090 --> 00:00:26,300
我们来看

7
00:00:26,530 --> 00:00:30,430
它首先获取一个

8
00:00:31,000 --> 00:00:31,950
Email的入口

9
00:00:32,590 --> 00:00:36,170
然后调用它的发Email的操作

10
00:00:37,250 --> 00:00:41,360
我们来看第一个,获取入口

11
00:00:42,770 --> 00:00:44,390
是应用服务这里定义的

12
00:00:45,030 --> 00:00:46,160
你看它的返回类型

13
00:00:46,430 --> 00:00:48,500
注意这里是一个接口类型

14
00:00:49,510 --> 00:00:53,510
这里,也就是说

15
00:00:54,170 --> 00:00:58,060
它只是依赖于接口类型的对象

16
00:00:58,920 --> 00:01:02,720
至于你具体的下面是哪个具体类型来实现

17
00:01:03,930 --> 00:01:05,520
你可以灵活变化

18
00:01:06,980 --> 00:01:12,240
所以这个里面的话就留下了变化的空间

19
00:01:13,990 --> 00:01:14,870
我们前面讲了

20
00:01:14,880 --> 00:01:17,310
通过泛化来达到这点变化

21
00:01:17,320 --> 00:01:20,100
就是绝大多数面向对象

22
00:01:21,040 --> 00:01:22,840
这些什么技巧

23
00:01:22,850 --> 00:01:24,040
说来说去就这样一个

24
00:01:24,480 --> 00:01:25,780
前面已经说过好几遍了

25
00:01:27,000 --> 00:01:27,760
返回

26
00:01:30,400 --> 00:01:32,220
好,有了这个

27
00:01:32,580 --> 00:01:36,330
然后就调用它发送Email的操作

28
00:01:36,460 --> 00:01:37,490
我们看参数

29
00:01:39,020 --> 00:01:42,800
参数有一个两个三个,代表了什么

30
00:01:43,370 --> 00:01:46,330
Email的地址

31
00:01:46,720 --> 00:01:49,120
Email的主题

32
00:01:49,530 --> 00:01:53,690
这个是Email的内容

33
00:01:55,150 --> 00:01:58,040
在这里,你看地址,主题,内容

34
00:02:00,010 --> 00:02:01,640
这几个从哪里来的

35
00:02:01,650 --> 00:02:09,340
就是从合同这个表

36
00:02:10,230 --> 00:02:12,100
数据表

37
00:02:12,110 --> 00:02:13,670
返回数据表的第一行

38
00:02:15,020 --> 00:02:16,460
各个字段里面来的

39
00:02:17,370 --> 00:02:21,660
这里面来的

40
00:02:22,890 --> 00:02:25,270
当然这里只是模拟发Email了

41
00:02:25,280 --> 00:02:26,670
把它写到控制台

42
00:02:26,760 --> 00:02:28,030
没有说真正发Email

43
00:02:30,700 --> 00:02:31,900
好,Email发出去了

44
00:02:32,150 --> 00:02:33,300
同样第二个一样

45
00:02:33,310 --> 00:02:36,780
获取入口,调用,一样的

46
00:02:38,070 --> 00:02:40,460
也是同样的,返回是接口类型

47
00:02:42,980 --> 00:02:47,890
发布这里有点区别

48
00:02:47,900 --> 00:02:52,610
你看这里,它参数放了一行进来

49
00:02:53,420 --> 00:02:59,610
放了一个数据行作为参数

50
00:03:01,190 --> 00:03:03,480
表示可以有不同的做法

51
00:03:05,330 --> 00:03:07,490
然后就把这一行作为参数放进来

52
00:03:07,500 --> 00:03:09,940
然后取里面字段

53
00:03:09,950 --> 00:03:10,980
ID、字段

54
00:03:11,720 --> 00:03:13,760


55
00:03:14,770 --> 00:03:15,640
两个字段

56
00:03:21,100 --> 00:03:21,810
这样来

57
00:03:23,550 --> 00:03:24,540
好,这是计算

58
00:03:25,380 --> 00:03:27,290
所以,这里面

59
00:03:27,660 --> 00:03:29,410
他在计算操作里面

60
00:03:29,420 --> 00:03:31,200
加了两个内容

61
00:03:31,510 --> 00:03:32,700
一个是发Email

62
00:03:33,030 --> 00:03:38,100
一个是发布到第三方的应用

63
00:03:40,060 --> 00:03:40,970
后面都一样了

64
00:03:40,980 --> 00:03:43,490
后面查询我们前面已经见过了

65
00:03:44,120 --> 00:03:47,290
就不多说了,一样的

66
00:03:47,300 --> 00:03:51,650
你看,这里面,一一模一样

67
00:03:52,740 --> 00:03:56,620
我们就

68
00:03:57,010 --> 00:03:59,950
你看这里,查出来,累计

69
00:04:00,410 --> 00:04:00,960
一样的

70
00:04:02,920 --> 00:04:10,450
好,我们直接继续了

71
00:04:10,860 --> 00:04:13,490
继续之后,你看我们这里

72
00:04:13,980 --> 00:04:19,500
发Email的内容,这是查询内容

73
00:04:20,940 --> 00:04:22,220
发布内容

74
00:04:22,230 --> 00:04:25,470
查询内容

75
00:04:32,230 --> 00:04:34,380


76
00:04:35,040 --> 00:04:38,840
发Email,发布,查询结果

77
00:04:39,510 --> 00:04:41,020


78
00:04:41,110 --> 00:04:42,580


79
00:04:43,300 --> 00:04:43,730
这样来

1
00:00:00,440 --> 00:00:04,640
下一个模式,我们要说的是行数据入口

2
00:00:05,500 --> 00:00:08,160
前面那个领域模式

3
00:00:08,520 --> 00:00:10,720
领域层的模式已经说完了

4
00:00:11,440 --> 00:00:13,750
接下来是数据源架构模式

5
00:00:13,760 --> 00:00:15,190
我们挑一些来讲

6
00:00:17,890 --> 00:00:20,800
前面我们讲事务脚本的时候说过

7
00:00:21,170 --> 00:00:22,480
表数据入口

1
00:00:01,720 --> 00:00:02,920
表数据入口

2
00:00:02,930 --> 00:00:05,520
是一个对象

3
00:00:05,530 --> 00:00:08,170
就搞定一个表里面所有行

4
00:00:10,430 --> 00:00:11,430
而行数据入口

5
00:00:11,440 --> 00:00:14,010
就是每个对象

6
00:00:14,020 --> 00:00:16,220
就模拟数据库里面

7
00:00:16,230 --> 00:00:20,260
某个表里面的一行

8
00:00:20,270 --> 00:00:23,450
也就是说,一行一个对象

9
00:00:24,190 --> 00:00:29,700
显然,你有多少行,我们要访问

10
00:00:30,950 --> 00:00:33,320
我们就要多少个对象

11
00:00:34,030 --> 00:00:36,890
相当于在内存里面

12
00:00:36,900 --> 00:00:37,930
提供一个

13
00:00:38,990 --> 00:00:41,230
数据库里面行的一个模拟

14
00:00:42,130 --> 00:00:46,010
也就是说,它的结构

15
00:00:47,650 --> 00:00:50,880
跟数据库里面

16
00:00:51,650 --> 00:00:53,560
一行里面的结构是一样的

17
00:00:56,630 --> 00:00:59,140
它的目的主要是,跟前面的入口一样

18
00:00:59,230 --> 00:01:03,550
入口的目的,就是说,负责转换

19
00:01:04,480 --> 00:01:10,140
把前面的请求转成相应的数据的请求

20
00:01:13,120 --> 00:01:19,350
然后通过它来屏蔽数据源的访问细节

21
00:01:21,650 --> 00:01:25,840
特别是如果你有不同的数据源的时候

22
00:01:26,700 --> 00:01:28,470
或者数据源会变化的时候

23
00:01:30,920 --> 00:01:38,860
这个里面只会有插入、更新

24
00:01:38,870 --> 00:01:40,220
删除这样的逻辑

25
00:01:41,900 --> 00:01:44,320
它不能有领域逻辑

26
00:01:45,180 --> 00:01:46,030
如果有领域逻辑

27
00:01:46,040 --> 00:01:49,630
那就变成下我们下面要讲的另外一个模式

28
00:01:49,800 --> 00:01:51,710
就是活动记录那个模式了

29
00:01:52,920 --> 00:01:56,480
把领域逻辑跟数据访问逻辑

30
00:01:56,490 --> 00:02:00,000
混在同一个类里面

31
00:02:00,910 --> 00:02:05,370
相当于把入口,行入口

32
00:02:05,380 --> 00:02:09,360
这个类,Person入口这个类和

33
00:02:09,910 --> 00:02:13,480
Person类两个绑在一起

34
00:02:13,570 --> 00:02:14,920
两个都累加在一起

35
00:02:15,010 --> 00:02:16,520
变成一个活动记录

36
00:02:18,620 --> 00:02:22,570
那是后面的我们还会讲的

37
00:02:27,150 --> 00:02:31,990
所以,你要它是一行一个对象

38
00:02:32,120 --> 00:02:36,480
所以你要把它申请的对象

39
00:02:36,490 --> 00:02:39,950
它就配这样一个,单独给它配

40
00:02:40,160 --> 00:02:43,360
每一个单独,每个类或每个表

41
00:02:43,490 --> 00:02:46,200
单独配一个查找器

42
00:02:48,990 --> 00:02:57,090
然后把入口的对象给生成,加载数据

43
00:02:57,100 --> 00:02:59,090
然后生成入口的对象

44
00:03:05,800 --> 00:03:09,940
如果有这种元数据映射的代码生成

45
00:03:10,610 --> 00:03:12,020
那么这个入口本身

46
00:03:12,960 --> 00:03:17,230
它可以大批量

47
00:03:17,240 --> 00:03:18,310
通过自动化

48
00:03:18,320 --> 00:03:19,670
映射来生成

49
00:03:20,310 --> 00:03:22,840
不需要我们一个个这样一遍遍写

50
00:03:25,100 --> 00:03:28,530
我们后面讲到元数据映射模式的时候

51
00:03:29,050 --> 00:03:29,850
再说这个问题

52
00:03:32,600 --> 00:03:34,060
显然,这个也是配合

53
00:03:35,160 --> 00:03:36,800
面向过程的事务脚本

54
00:03:36,930 --> 00:03:39,120
跟前面的表数据入口一样

55
00:03:40,090 --> 00:03:47,800
如果是领域模型

56
00:03:47,810 --> 00:03:51,660
面向对象,配合就是映射器模式了

57
00:03:57,380 --> 00:03:58,330
我们来看案例

58
00:03:59,560 --> 00:04:04,170
这个案例跟之前的案例就不一样了

59
00:04:04,180 --> 00:04:06,130
它是换了一个

60
00:04:06,140 --> 00:04:09,060
书上就换了一个人员管理的案例

61
00:04:09,150 --> 00:04:10,900
就一个很简单的表

62
00:04:10,910 --> 00:04:12,140
人员表

63
00:04:14,460 --> 00:04:22,470
然后主键,ID、姓、名

64
00:04:22,560 --> 00:04:26,860
然后这个是他的家属

65
00:04:27,400 --> 00:04:28,510
家属的数量

66
00:04:30,580 --> 00:04:32,460
依赖于他的那些人的数量

67
00:04:32,670 --> 00:04:40,070
所以后面会有一个说谁是负责人

68
00:04:41,640 --> 00:04:43,270
有多少人靠着你吃饭

69
00:04:43,280 --> 00:04:47,640
你就是那个家的主人

70
00:04:48,250 --> 00:04:50,720
主人或者负责人

71
00:04:52,220 --> 00:04:53,410
有多少人依赖你

72
00:04:53,420 --> 00:04:55,290
家属和下属都可以

73
00:05:02,540 --> 00:05:05,440
同样的,这个案例来源

74
00:05:05,450 --> 00:05:08,150
我们也是用网络上

75
00:05:08,160 --> 00:05:14,350
有一家用C#复刻的案例一样的

76
00:05:16,480 --> 00:05:21,630
类图,入口类

77
00:05:22,190 --> 00:05:30,470
它继承了一个基入口

78
00:05:30,810 --> 00:05:32,490
但一会我们看代码会看到

79
00:05:32,500 --> 00:05:34,910
它里面也没干什么

80
00:05:35,360 --> 00:05:38,790
就是有一个ID是在这里面定义的

81
00:05:39,310 --> 00:05:42,000
就是说,由超类来控制ID

82
00:05:42,640 --> 00:05:45,190
所有的子类不管你什么ID

83
00:05:45,860 --> 00:05:49,230
就是说,都是用超类那里的ID

84
00:05:53,080 --> 00:05:57,460
然后下面,它这里用一个注册表

85
00:05:58,280 --> 00:06:02,590
来存放PersonsMap

86
00:06:03,040 --> 00:06:08,790
里面有一个集合,里面有个词典

87
00:06:08,800 --> 00:06:14,140
里面有很多人员入口的对象

88
00:06:16,100 --> 00:06:17,910
然后查找器

89
00:06:18,000 --> 00:06:20,470
查找器这里来查找

90
00:06:20,480 --> 00:06:22,820
给它ID

91
00:06:22,830 --> 00:06:27,610
然后返回一个人员入口的对象

92
00:06:28,930 --> 00:06:35,240
也可以查找哪些是负责人

93
00:06:35,960 --> 00:06:38,250
多了一个这个

94
00:06:38,260 --> 00:06:41,650
这都是书上给出了代码的片段

95
00:06:41,820 --> 00:06:47,520
然后复刻成了完整的代码

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

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

相关文章

【C++】————类和对象(上)

作者主页: 作者主页 本篇博客专栏:C 创作时间 :2024年6月21日 一、类与对象的初步认识 1、类其实就是对对象的抽象,而对象就是对类的具体实例 类不占用内存,而对象占用内存。 2、面向对象与面向过程 C语言是面…

技术探索:如何利用合合信息智能文档处理提升审查效率

官.网地址:合合TextIn - 合合信息旗下OCR云服务产品 智能文档处理技术是一系列技术的集合,旨在自动化地捕获、理解、处理和分析文档内容,以支持企业的数字化转型和提升文档处理效率。 智能文档处理技术的核心包括光学字符识别(O…

【码银送书第二十一期】《大数据智能风控:模型、平台与业务实践》

人行印发的《金融科技(FinTech)发展规划(2022一2025年)》明确指出金融科技成为防范化解金融风险的利器,运用大数据、人工智能等技术建立金融风控模型,有效甄别高风险交易,智能感知异常交易&…

光电数鸡算法《java》

一:需求 题目:一条流水线有工位D1,D2,D3…D20,总共20个工位。 每个工位都装有一个光电计数器,每个工位都为本工位的计数减去前一个工位(第一个有数值的工位除外,不计算。) 计算规则:比如D1,D2都…

Android CTS环境搭建

CTS即Compatibility Test Suite意为兼容性测试,是Google推出的Android平台兼容性测试机制。其目的是尽早发现不兼容性,并确保软件在整个开发过程中保持兼容性。只有通过CTS认证的设备才能合法的安装并使用Google market等Google应用。 搭建CTS测试环境需…

计算机网络:应用层 - 域名系统 DNS

计算机网络:应用层 - 域名系统 DNS 域名结构域名服务器域名解析迭代查询递归查询 互联网中的每台设备都有一个唯一的IP地址,但这些地址通常是复杂的数字组合,例如 172.217.160.142,难以记忆和识别。域名系统将这些复杂的IP地址与易…

通过腾讯云TDSQL TCPTCE(MySQL版)认证考试秘籍宝典

腾讯云TDSQL(MySQL版)交付运维高级工程师TCCP证书展示 腾讯云TDSQL(MySQL版)交付运维专家TCCE考试成绩、证书展示 认证类型与级别 TCCA:入门级(初级) TCCP:高级(中级) TCCE:专家级(高级) 考试形式 考试是在线考试,考生需要在腾讯云大学官网上完成。 腾讯云TDSQ…

【会议征稿】2024年应用计算智能、信息学与大数据国际会议(ACIIBD 2024,7月26-28)

2024年应用计算智能、信息学与大数据国际学术会议(ACIIBD 2024)将于2024年7月26-28日在中国广州举办。会议将聚焦于计算智能及其应用、信息、大数据等相关的研究领域, 广泛邀请国内外知名专家学者,共同探讨相关学科领域的最新发展…

深入理解和实现Windows进程间通信(信号量)

常见的进程间通信方法 常见的进程间通信方法有: 管道(Pipe)消息队列共享内存信号量套接字 下面,我们将详细介绍信号量的原理以及具体实现。 什么是信号量? 信号量(Semaphore)是一个非常重要…

【数据库】数据库脚本编写规范(Word原件)

编写本文档的目的是保证在开发过程中产出高效、格式统一、易阅读、易维护的SQL代码。 1 编写目的 2 SQL书写规范 3 SQL编写原则 软件全套资料获取进主页或者本文末个人名片直接获取。

OPPO布局自动驾驶?基于语义地图的自动驾驶汽车单目定位

论文标题: Monocular Localization with Semantics Map for Autonomous Vehicles 论文作者: Jixiang Wan, Xudong Zhang, Shuzhou Dong, Yuwei Zhang, Yuchen Yang, Ruoxi Wu, Ye Jiang, Jijunnan Li, Jinquan Lin, Ming Yang 作者单位:O…

CoAP协议详解:物联网通信的轻量级解决方案

什么是CoAP协议 CoAP(Constrained Application Protocol)是一种专门为物联网(IoT)设计的应用层协议。它的目标是为受限设备和网络提供轻量级的通信解决方案。CoAP协议基于REST(Representational State Transfer&#x…

云手机群控功能讲解

接触云手机之前,很多企业或者个人卖家都对群控有浓厚的兴趣,云手机群控具体是什么呢?云手机群控,顾名思义,是指能够同时对多台云手机进行集中控制和管理的功能。打破了传统单台手机操作的限制,实现了规模化…

数据资产与企业绩效的紧密关联:深入解析数据资产如何直接影响企业绩效,并探讨如何通过策略性利用数据,优化运营,进而提升企业的整体业绩与竞争力

目录 一、引言 二、数据资产与企业绩效的紧密关联 (一)数据资产的定义与价值 (二)数据资产对企业绩效的影响 三、策略性利用数据资产优化运营 (一)建立数据驱动的企业文化 (二&#xff0…

ACM顶会SIGGRAPH 2024最佳论文出炉:英伟达两篇最佳论文,三支国内团队获荣誉提名,浙大周昆获时间检验奖

文章目录 1. 最佳论文最佳论文 1最佳论文 2最佳论文 3最佳论文 4最佳论文 5 2. 最佳论文荣誉提名最佳论文荣誉提名 1最佳论文荣誉提名 2最佳论文荣誉提名 3最佳论文荣誉提名 4最佳论文荣誉提名 5最佳论文荣誉提名 6最佳论文荣誉提名 7最佳论文荣誉提名 8最佳论文荣誉提名 9最佳…

【VS Code 插件】SQLite 可视化插件

VScode 插件分享篇之sqlite可视化工具 项目经常用到SQLite这个轻量型数据库,于是乎,就想着找一个可视化工具,但是我有时候只是想方便预览数据 表,又不想安装额外的程序,那么这款插件很适合你。 用习惯VS Code的小伙伴…

测试的基础知识大全【测试概念、分类、模型、流程、测试用例书写、用例设计、Bug、基础功能测试实战】

测试基础笔记 Day01阶段⽬标⼀、测试介绍⼆、测试常⽤分类2.1 阶段划分单元测试集成测试系统测试验收测试 2.2 代码可⻅度划分⿊盒测试:主要针对功能(阶段划分->系统测试)灰盒测试:针对接⼝测试(阶段划分->集成测…

服务器机柜和网络机柜有什么区别

服务器机柜和网络机柜虽然在外观上可能相似,都遵循19英寸的标准,但它们的设计目的、功能、结构和特性存在明显的区别。下面是两者的主要区别: 1. 用途 服务器机柜:主要用于承载和组织服务器设备,包括主机、存储设备、交…

redis以后台的方式启动

文章目录 1、查看redis安装的目录2、Redis以后台的方式启动3、通过客户端连接redis4、连接后,测试与redis的连通性 1、查看redis安装的目录 [rootlocalhost ~]# cd /usr/local/redis/ [rootlocalhost redis]# ll 总用量 112 drwxr-xr-x. 2 root root 150 12月 6…

人工智能导论 题目

目录 1.人工神经网络参数个数的计算 2.卷积神经网络卷积和池化的计算 知识表示 命题 谓词 谓词公式 1.连接词 2.量词 3.量词的辖域 逻辑等价式 范式 推理规则 全程量词和存在量词之间的关系 产生式 产生式系统 3.命题/谓词逻辑证明 1.​ ​2. 3. 4. 5. 6. …