[图解]企业应用架构模式2024新译本讲解25-层超类型

1
00:00:01,820 --> 00:00:03,730
层超类型这个模式

2
00:00:03,740 --> 00:00:07,590
它是属于基本模式之一了

3
00:00:07,880 --> 00:00:10,270
第18章的基本模式之一

4
00:00:13,560 --> 00:00:14,590
定义是这样的

5
00:00:15,160 --> 00:00:16,070
(译文)改得比较多

6
00:00:16,200 --> 00:00:19,240
因为之前的翻译到后面了之后

7
00:00:19,550 --> 00:00:21,030
可能有点倦怠

8
00:00:21,360 --> 00:00:24,960
所以有些翻译就有点乱掉了

9
00:00:27,560 --> 00:00:28,680
某一类型

10
00:00:29,050 --> 00:00:34,610
就是充当一层里面

11
00:00:34,620 --> 00:00:36,370
所有类型的超类型

12
00:00:40,680 --> 00:00:42,250
所有的里面,最顶上

13
00:00:44,160 --> 00:00:46,110
平时我们见到最多像什么

14
00:00:46,120 --> 00:00:47,950
我们框架里面的object

15
00:00:47,960 --> 00:00:50,150
就是类似这样一个

16
00:00:50,880 --> 00:00:54,500
一会我们这里面也有一个domainobject

17
00:00:56,500 --> 00:00:59,740
领域对象,或者说,抽象映射器,一样的

18
00:00:59,750 --> 00:01:05,120
就是说有一个类充当所有类型的超类

19
00:01:06,010 --> 00:01:07,070
最顶上的超类

20
00:01:12,530 --> 00:01:14,730
作用就是如果说

21
00:01:14,740 --> 00:01:16,450
某一层里面所有对象

22
00:01:16,460 --> 00:01:17,730
都有某些方法

23
00:01:18,630 --> 00:01:21,260
然后把这些共同的东西

24
00:01:21,390 --> 00:01:24,850
把它移到超类里面去

25
00:01:29,690 --> 00:01:31,240
常见的就是这个了

26
00:01:31,250 --> 00:01:32,400
你看,这里也说了

27
00:01:32,850 --> 00:01:34,890
共有的特性常见

28
00:01:34,900 --> 00:01:40,410
主要是一个标识字段的存储

29
00:01:42,310 --> 00:01:50,990
这是一个,这是领域对象

30
00:01:51,580 --> 00:01:52,960
也是domainobject

31
00:01:52,970 --> 00:01:55,940
主要是干这个

32
00:01:56,980 --> 00:01:59,260
还有一个层超类型是什么

33
00:01:59,270 --> 00:02:00,740
抽象映射器的类型

34
00:02:01,440 --> 00:02:02,960
一会我们会看到

35
00:02:02,970 --> 00:02:09,160
它里面有负责一个SQL语句

36
00:02:10,140 --> 00:02:16,170
还有参数集合,这两个,由它在里面定义

37
00:02:20,620 --> 00:02:22,850
比如说,这是一个层超类型

38
00:02:23,410 --> 00:02:26,950
所有的领域对象都从这里继承下来

39
00:02:33,560 --> 00:02:34,360
这也是一个

40
00:02:38,670 --> 00:02:40,060
然后上面定义了一个

41
00:02:41,050 --> 00:02:45,340
大家都有的loadedmap

42
00:02:45,710 --> 00:02:49,720
就是映像的集合

43
00:02:52,770 --> 00:02:54,250
还定义了很多共同的东西

44
00:02:54,260 --> 00:02:57,250
查询的SQL语句

45
00:02:57,630 --> 00:03:01,930
插入的,等等

46
00:03:02,260 --> 00:03:03,970
然后由下面这个来实现

1
00:00:00,450 --> 00:00:04,900
接下来,我们来看插入的示例

2
00:00:09,530 --> 00:00:14,600
首先,它这里先new一个

3
00:00:15,010 --> 00:00:16,160
Person的实例

4
00:00:17,740 --> 00:00:20,230
这里的ID暂时设为0

5
00:00:20,790 --> 00:00:24,430
后面就是那几个属性的值了

6
00:00:26,640 --> 00:00:27,710
实例new完之后

7
00:00:27,720 --> 00:00:31,440
再把实例作为参数

8
00:00:31,830 --> 00:00:36,000
给mapper执行insert操作

9
00:00:37,710 --> 00:00:45,370
我们来看一下,领域类在这里

10
00:00:45,380 --> 00:00:51,760
然后实例化一个对象,ID等于0

11
00:00:56,800 --> 00:00:59,400
然后就到insert这里了

12
00:01:03,860 --> 00:01:09,260
这里参数是一个领域对象的类型

13
00:01:10,740 --> 00:01:14,160
就是说,不管你是Person也可以

14
00:01:14,170 --> 00:01:16,200
或者其他领域对象也可以

15
00:01:16,210 --> 00:01:17,800
因为它们的共同超类

16
00:01:17,810 --> 00:01:19,200
就是domainobject

17
00:01:22,750 --> 00:01:24,900
创建并打开数据库连接,这一样的

18
00:01:29,340 --> 00:01:32,950
好,下面这个跟前面类似

19
00:01:33,300 --> 00:01:38,210
就是说,它这个SQL语句等等

20
00:01:38,420 --> 00:01:41,770
也是通过一个方法来构造的

21
00:01:45,160 --> 00:01:51,130
然后用它来创建数据库命令实例

22
00:01:52,850 --> 00:01:56,980
而这个也跟前面一样,在超类里面定义

23
00:01:57,370 --> 00:01:58,940
然后在子类里面实现

24
00:01:59,280 --> 00:02:01,260
所以你看,我们下面这个

25
00:02:02,730 --> 00:02:09,810
通过这个来构造SQL

26
00:02:09,820 --> 00:02:11,610
作为参数传进去

27
00:02:12,150 --> 00:02:13,800
来构造 command

28
00:02:16,250 --> 00:02:18,700
首先是这个了

29
00:02:22,710 --> 00:02:23,920
那么这个的定义

30
00:02:23,930 --> 00:02:32,600
在抽象的这里

31
00:02:32,610 --> 00:02:35,360
作为一个抽象方法在这里定义

32
00:02:37,350 --> 00:02:42,170
然后具体怎么构造

33
00:02:42,900 --> 00:02:44,740
就放在各个子类里面

34
00:02:46,050 --> 00:02:49,750
所以在这里面,你看,这里构造

35
00:02:51,540 --> 00:02:54,940
覆盖了超类的方法

36
00:02:54,950 --> 00:03:01,710
然后这里有4个参数

37
00:03:07,010 --> 00:03:07,890
好,得到这个了

38
00:03:08,190 --> 00:03:10,810
然后构造一个command

39
00:03:11,290 --> 00:03:14,600
然后下面这个是一样的

40
00:03:17,340 --> 00:03:18,980
之前的ID是0

41
00:03:19,540 --> 00:03:24,400
现在又把它设成我们算出来ID了

42
00:03:24,410 --> 00:03:28,110
ID这里面就是跟之前一样了

43
00:03:28,120 --> 00:03:30,750
就是领域对象的下一个ID也是这样

44
00:03:30,760 --> 00:03:32,270
用这种方法来获得的

45
00:03:35,960 --> 00:03:39,180
这个地方跟前面行数据入口

46
00:03:39,190 --> 00:03:44,450
和活动记录示例是一样的,没有区别

47
00:03:55,980 --> 00:03:57,410
Id有了,然后把这ID

48
00:03:57,880 --> 00:04:01,410
先把它添加到command的参数

49
00:04:02,460 --> 00:04:03,690
创建参数

50
00:04:03,700 --> 00:04:05,050
然后给参数赋值

51
00:04:05,720 --> 00:04:07,060
类型是整形

52
00:04:07,070 --> 00:04:09,820
值是这个,添加进去

53
00:04:12,310 --> 00:04:12,800

54
00:04:18,180 --> 00:04:26,050
添加了这个了,然后再把这个领域对象

55
00:04:26,060 --> 00:04:27,730
和Command作为参数

56
00:04:28,440 --> 00:04:31,140
调用这个操作

57
00:04:34,740 --> 00:04:40,610
我们来看这个操作

58
00:04:40,620 --> 00:04:42,370
也是在超类里面定义的

59
00:04:50,910 --> 00:04:53,390
参数就是一个领域对象

60
00:04:53,400 --> 00:04:58,370
然后一个DBCommand,在这里定义

61
00:05:01,880 --> 00:05:04,690
然后这里,具体实现放在这里

62
00:05:06,740 --> 00:05:08,330
首先把这个领域对象

63
00:05:08,340 --> 00:05:10,280
变成Person对象

64
00:05:11,740 --> 00:05:19,180
把它的值

65
00:05:19,730 --> 00:05:21,920
这里定义参数

66
00:05:22,950 --> 00:05:26,260
然后把它的参数的值

67
00:05:26,270 --> 00:05:28,620
设成Person的各个属性的值

68
00:05:29,150 --> 00:05:33,030
一个一个这样把它,参数一参数二参数三

69
00:05:34,290 --> 00:05:36,720
一个一个插入

70
00:05:43,940 --> 00:05:44,210

71
00:05:45,300 --> 00:05:47,860
就说给Command的参数

72
00:05:48,570 --> 00:05:50,680
一个个添加到参数集合里面去

73
00:05:55,670 --> 00:06:01,020
这个只是构造

74
00:06:01,190 --> 00:06:03,860
给Command设置参数等等

75
00:06:04,030 --> 00:06:05,660
没有执行,下面才是执行

76
00:06:06,220 --> 00:06:11,840
到这一步才真正执行,执行完了

77
00:06:12,310 --> 00:06:14,320
相当于这条记录

78
00:06:14,890 --> 00:06:17,740
这条记录,这个新的人

79
00:06:17,750 --> 00:06:21,340
已经添加到数据库里面去了

80
00:06:22,040 --> 00:06:25,910
然后这时候还要把它添加到标识映射

81
00:06:25,920 --> 00:06:30,070
loadedmap这个,添加进去

82
00:06:31,700 --> 00:06:32,940
键就是ID

83
00:06:32,950 --> 00:06:34,940
然后这个是对象

84
00:06:34,950 --> 00:06:39,310
然后返回ID

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

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

相关文章

MySQL黑马教学对应视屏笔记分享之聚合函数,以及排序语句的讲解笔记

聚合函数 注意:null值不参与聚合函数的计算。 分组查询 2.where与having的区别 执行时机不同:where是在分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。判断条件不同:w…

代替EXCEL-ReoGrid .NET开源快速、强大的电子表格组件

今天大姚给大家分享一个.NET开源(MIT License)、快速、强大、免费的电子表格组件,支持数据格式、冻结、大纲、公式计算、图表、脚本执行等。兼容 Excel 2007 (.xlsx) 格式,支持WinForm、WPF和Android平台:ReoGrid。 项…

新型球幕影院:可移动式大空间的未来—轻空间

随着科技的不断进步和人们对多样化娱乐需求的提升,新型球幕影院作为一种创新的观影方式,逐渐进入大众视野。它不仅提供了沉浸式的视觉体验,还拥有可移动式大空间的特点,适应多种使用场景。轻空间将详细介绍新型球幕影院的独特优势…

LVS实验

LVS实验 nginx1 RS1 192.168.11.137 nginx2 RS2 192.168.11.138 test4 调度器 ens33 192.168.11.135 ens36 12.0.0.1 test2 客户端 12.0.0.10 一、test4 配置两张网卡地址信息 [roottest4 network-scripts]# cat ifcfg-ens33 TYPEEthernet BOOTPROTOstatic DEFROUTEyes DEVIC…

sql常用语句:

1.联合查询 对表中的数据进行限制; 2.从一个表复制到另一个表 SELECT INTO 将数据复制到一个新表(有的 DBMS 可以覆盖已经存在的表,这依赖于 所使用的具体 DBMS) SELECT *(字段) INTO CustCopy FROM Cu…

TQSDRPI开发板教程:编译openwifi工程

本例程基于SDRPI开发板,在Ubuntu中使用vivado编译openwifi工程,最终生成BOOT.BIN文件。需要拥有安装vivado2021.1版本的ubuntu系统或虚拟机。 首先需要下载openwifi的编译文件,可以在GitHub中搜索openwifi-hw,网址如下所示&#…

Blender 中导出模型fbx

准备模型:确保你的模型已经完成,并且所有的材质、纹理等都已设置好。 应用所有变换: 选择模型,按下 CtrlA,选择 "All Transforms" 以应用所有的变换(位置、旋转和缩放)。 导出模型&a…

【初阶数据结构】树与二叉树:从零开始的奇幻之旅

初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!时间与空间复杂度的深度剖析深入解析顺序表:探索底层逻辑深入解析单链表:探索底层逻辑深入解析带头双向循环链表:探索底层逻辑深入解析栈:探索底层逻辑深入解析队列:探索底层逻辑深入解析循环队列:探索…

数据结构(Java):集合类LinkedList集合类Stack

1、集合类LinkedList 1.1 什么是LinkedList LinkedList的底层是一个双向链表的结构(故不支持随机访问): 在LinkedList中,定义了first和last,分别指向链表的首节点和尾结点。 每个节点中有一个成员用来存储数据&…

视频压缩电脑软件,视频压缩电脑怎么操作

在数字媒体时代,视频文件的大小往往让人头疼。如何在不损失画质的情况下压缩视频,成为了许多创作者和普通用户的需求。本文将为你详细介绍电脑压缩软件,让你轻松应对视频压缩任务。 1.下载并安装视频压缩软件。 2.打开软件,选择视…

[leetcode] shortest-subarray-with-sum-at-least-k 和至少为 K 的最短子数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int shortestSubarray(vector<int>& nums, int k) {int n nums.size();vector<long> preSumArr(n 1);for (int i 0; i < n; i) {preSumArr[i 1] preSumArr[i] nums[i];}int res n…

机遇与挑战并存 券商国际化战略布局关键要素

引言 在全球金融市场不断开放和技术快速进步的背景下&#xff0c;越来越多中资背景的券商开始寻求国际化发展。富途和老虎证券作为先行者&#xff0c;展示了中国券商在出海过程中的巨大潜力和成功经验。鉴于中资在海外设立券商的成功&#xff0c;不少公司也有意愿在海外设立券…

爆款文案管理系统设计

设计一个爆款文案管理系统&#xff0c;目标是帮助营销团队高效地创建、管理并分析吸引人的文案&#xff0c;以提升产品或服务的市场吸引力和销售转化率。以下是一些关键功能和设计考量点&#xff1a; 1. 用户友好界面 简洁直观的界面&#xff1a;确保系统界面清晰&#xff0c…

抖音短视频矩阵管理系统搭建全攻略:功能详解与实战应用

在短视频时代&#xff0c;抖音已经成为众多企业、网红、个人创作者不可或缺的传播平台。然而&#xff0c;如何高效管理多个抖音账号&#xff0c;实现内容、数据、粉丝的全方位掌控&#xff0c;成为了摆在大家面前的一道难题。本文将为大家深入解析抖音短视频矩阵管理系统的搭建…

项目管理工具评测:2024年国内外最顶级的10款项目管理工具排行

国内外涌现出众多优秀的项目管理工具&#xff0c;它们各自在功能、易用性、集成能力等方面展现出独特优势。以下是国内外顶级的10款项目管理工具&#xff1a; 一、进度猫 推荐理由&#xff1a;进度猫以其直观的任务管理和进度跟踪功能&#xff0c;成为许多团队和项目的首选…

C++入门 模仿mysql控制台输出表格

一、 说明 控制台输出表格&#xff0c;自适应宽度 二、 源码 #include <iostream> #include <map> #include <string> #include <vector>using namespace std;void printTable(vector<vector<string>> *pTableData) {int row pTableDa…

Leetcode104.求二叉树的最大深度

题目描述 递归法 class Solution {public int maxDepth(TreeNode root) {if (root null) { //帮助下面的else语句判空return 0;} else {int leftHeight maxDepth(root.left);int rightHeight maxDepth(root.right);/*** 要注意的点* 1. 这个return是写在else语句里面的&am…

ABeam News | FY25 ABeam德硕大中华区入社式,飞往崭新航向!

FY25 ABeam大中华区入社式 7月1日&#xff0c;51名 ABeam大中华区新生在艾宾信息技术开发&#xff08;上海&#xff09;有限公司大连分公司&#xff08;以下简称TDC&#xff09;报到&#xff0c;我们为他们的到来准备了隆重的入社仪式&#xff0c;并举办了热情而又温馨的欢迎晚…

通过图像高频信息保留图像细节,能保留多少细节-Comfyui

&#x1f9e8;前情提要 如果还不了解comfyui中图像高频信息保留细节的内容&#xff0c;可以参考上一篇文章&#xff1a; 图像中高频信息、低频信息与ComfyUI中图像细节保留的简单研究-CSDN博客 这次主要是简单测试下保留图像细节&#xff0c;能保留到什么程度&#xff1b; …

JavaScript(7)——数组

JavaScript中数组的用法与Java差不多&#xff0c;但还是有一些区别 声明数组 语法: let 数组名 [数据1,数据2,数据...] let arr new Array(数据1,数据2,...数据n) 添加数据 数组.push()方法将一个或多个元素添加到数组末尾&#xff0c;并返回该数组新长度 <script>…