[图解]企业应用架构模式2024新译本讲解14-服务层2

1
00:00:01,070 --> 00:00:01,820
我们来看案例

2
00:00:02,600 --> 00:00:06,620
案例也同样是之前跟事务脚本

3
00:00:07,030 --> 00:00:09,400
领域模型等等用过的案例是一样的

4
00:00:10,480 --> 00:00:12,700
这里译文改了一些

5
00:00:16,200 --> 00:00:20,430
应用服务类在这里

6
00:00:21,080 --> 00:00:22,990
我们看它的命名

7
00:00:23,530 --> 00:00:24,590
我们往往是以

8
00:00:26,110 --> 00:00:28,510
实际上就相当于我们分析类里面的控制类

9
00:00:31,720 --> 00:00:33,040
用用例的名字来命名

10
00:00:34,140 --> 00:00:40,080
这个在事务脚本里面已经见到过了

11
00:00:40,690 --> 00:00:42,920
只不过事务脚本的时候

12
00:00:42,930 --> 00:00:45,630
说的重点在事务脚本上面

13
00:00:45,930 --> 00:00:50,170
现在我们说的是服务类的上面

14
00:00:51,860 --> 00:01:01,200
可以说,泛化一个抽象的应用服务类

15
00:01:02,030 --> 00:01:06,030
同样,这些具体的这些的话也可以泛化

16
00:01:06,040 --> 00:01:14,020
但这里面的话它就直接,这个就是什么

17
00:01:14,030 --> 00:01:19,540
这个就是接口了

18
00:01:19,860 --> 00:01:21,090
刚刚说错了

19
00:01:21,100 --> 00:01:22,330
这个就是接口了

20
00:01:22,340 --> 00:01:25,190
一会我们看后面的

21
00:01:25,200 --> 00:01:27,200
书上

22
00:01:27,210 --> 00:01:28,560
还有更细的图

23
00:01:29,790 --> 00:01:31,660
这个的话有点冲突

24
00:01:31,830 --> 00:01:33,580
跟我们后面演示的代码冲突

25
00:01:33,590 --> 00:01:34,620
后面的演示代码的话

26
00:01:37,000 --> 00:01:41,060
这个名字是描述实现接口的类的

27
00:01:41,660 --> 00:01:43,420
接口应该有个I在这里

28
00:01:43,680 --> 00:01:47,450
前面有个I,这个的话

29
00:01:47,460 --> 00:01:49,090
他就把这个标成接口

30
00:01:49,630 --> 00:01:56,160
意思就是说,这个类它依赖的是接口

31
00:01:56,370 --> 00:01:57,280
后面的实现

32
00:01:57,290 --> 00:02:00,930
包括Email怎么发

33
00:02:00,940 --> 00:02:03,660
还有后面的第三方应用

34
00:02:03,670 --> 00:02:05,260
怎么样发布到那里去

35
00:02:06,320 --> 00:02:09,000
由实现类里面来写

36
00:02:11,410 --> 00:02:13,430
我们来看这个案例

37
00:02:13,950 --> 00:02:15,270
同样的,来源

38
00:02:15,280 --> 00:02:17,790
也是跟我们前面的来源是一样的

39
00:02:18,830 --> 00:02:23,870
这是类图,你看,这个就要多几个类

40
00:02:24,040 --> 00:02:26,420
你看,刚才这个类在这里

41
00:02:27,090 --> 00:02:30,370
刚才这个类把它说是接口

42
00:02:30,620 --> 00:02:32,920
这里单独分成一个接口

43
00:02:34,420 --> 00:02:35,420
这个是实现它

44
00:02:35,430 --> 00:02:39,130
这个也是

45
00:02:41,060 --> 00:02:44,260
你看这多了一个I,II看起来有点

46
00:02:44,270 --> 00:02:48,180
两个I

47
00:02:49,330 --> 00:02:52,610
一个是电子邮件的接口

48
00:02:52,620 --> 00:02:55,810
一个是集成应用的接口

49
00:02:55,820 --> 00:02:57,470
也就是说,这里面

50
00:02:58,600 --> 00:03:03,470
它就添加了一点点应用的逻辑

51
00:03:03,600 --> 00:03:06,380
就是说,前面收入确认这些东西

52
00:03:06,590 --> 00:03:07,720
我们前面讲

53
00:03:07,730 --> 00:03:09,280
用一个领域模型什么

54
00:03:09,660 --> 00:03:10,760
都可以封装了

55
00:03:12,140 --> 00:03:15,360
但是它这里加了一个内容,就是说

56
00:03:15,370 --> 00:03:19,530
算完之后发一个邮件

57
00:03:20,870 --> 00:03:21,850
显然,发邮件

58
00:03:22,020 --> 00:03:25,460
就不能跟之前

59
00:03:25,670 --> 00:03:27,420
产品合同这些类混在一起了

60
00:03:27,430 --> 00:03:27,660
对吧

61
00:03:28,650 --> 00:03:29,330
这是一个

62
00:03:29,340 --> 00:03:30,010
第二个

63
00:03:31,000 --> 00:03:34,610
并用一个面向消息的中间件来发布消息

64
00:03:35,110 --> 00:03:37,060
通知其他已集成的应用

65
00:03:39,920 --> 00:03:43,450
显然这是另外一个领域的内容

66
00:03:45,550 --> 00:03:47,660
跟合同、产品

67
00:03:48,230 --> 00:03:49,620
这个不是一个领域的

68
00:03:50,480 --> 00:03:54,950
所以不能够混在一起

69
00:03:59,000 --> 00:04:04,350
所以在这个地方定义了两个入口

70
00:04:05,500 --> 00:04:07,140
入口的类,这个一样

71
00:04:08,560 --> 00:04:11,830
管理数据库连接,DbManager

72
00:04:12,800 --> 00:04:13,870
这是主程序

73
00:04:14,740 --> 00:04:18,280
然后同样这是一个入口的类

74
00:04:19,830 --> 00:04:22,920
定义了数据库的访问

75
00:04:23,290 --> 00:04:28,500
表数据入口,跟事务脚本里面的一样,没有区别

76
00:04:30,630 --> 00:04:33,300
这是类图,我们来看序列图

77
00:04:34,620 --> 00:04:37,830
序列图,你看,它这里就比较多了

78
00:04:37,920 --> 00:04:42,960
对象在这里,很多个

79
00:04:42,970 --> 00:04:49,200
1234567

80
00:04:49,210 --> 00:04:52,370
这里你看,Email的入口

81
00:04:52,770 --> 00:04:55,450
这是集成应用的入口

82
00:04:56,230 --> 00:04:59,060
上面算完了

83
00:04:59,520 --> 00:05:01,960
这下面发Email,发布到集成应用

84
00:05:03,730 --> 00:05:07,080
在这里,我们看一下

85
00:05:09,330 --> 00:05:11,010
工具上,更清楚一点

86
00:05:11,020 --> 00:05:12,690
工具上字体不太好看

87
00:05:12,980 --> 00:05:16,170
但是更清楚,序列图

88
00:05:19,410 --> 00:05:20,090
类图在这里

89
00:05:21,800 --> 00:05:30,310
序列图,这是应用服务类

90
00:05:30,760 --> 00:05:31,840


91
00:05:31,850 --> 00:05:33,800


92
00:05:45,050 --> 00:05:45,140
这里

93
00:05:46,710 --> 00:05:48,850
创建了一个电子邮件入口

94
00:05:49,390 --> 00:05:49,950
然后

95
00:05:58,500 --> 00:06:01,860
里面让它发送电子邮件信息

96
00:06:03,560 --> 00:06:06,550
同样的,下面一个集成应用的入口

97
00:06:08,180 --> 00:06:14,560
然后这里发布到集成应用

98
00:06:15,380 --> 00:06:20,910
涉及到的类是比较多的

99
00:06:21,330 --> 00:06:27,440


100
00:06:29,510 --> 00:06:34,730
有8个类来协作

101
00:06:35,950 --> 00:06:37,760
我们来看一下它的代码

1
00:00:00,730 --> 00:00:01,890
这是代码

2
00:00:03,660 --> 00:00:04,730
我们看主程序

3
00:00:06,390 --> 00:00:08,420
同样,我们这里也加了一些注释

4
00:00:09,510 --> 00:00:14,260
我们逐步逐句运行

5
00:00:32,620 --> 00:00:35,290
这里面,也是跟前面事务脚本一样

6
00:00:35,300 --> 00:00:39,370
用了一个SQLite的数据库

7
00:00:40,210 --> 00:00:42,280
我们前面说过了,就不再说了

8
00:00:44,850 --> 00:00:49,550
首先DbManager

9
00:00:52,070 --> 00:00:54,590
用DbManager来创建数据库连接

10
00:00:55,350 --> 00:00:59,130
这里把它放到一个using的块里面来

11
00:00:59,390 --> 00:01:03,590
意思是确保它在使用之后能够被释放

12
00:01:03,760 --> 00:01:07,150
一旦这个代码块结束之后

13
00:01:07,590 --> 00:01:09,480
它就会被释放掉

14
00:01:13,060 --> 00:01:15,890
那么这个就跳到DbManager这里了

15
00:01:16,580 --> 00:01:17,970
前面跟事务脚本一样了

16
00:01:18,260 --> 00:01:24,750
这个一样,数据源,一样的,就不多说了

17
00:01:24,760 --> 00:01:25,670
打开连接

18
00:01:26,950 --> 00:01:29,680
然后创建一个Command对象

19
00:01:29,930 --> 00:01:31,480
数据库命令对象

20
00:01:32,480 --> 00:01:35,930
然后设置命令的SQL语句

21
00:01:36,480 --> 00:01:39,230
SQL语句就是如果这个表存在的话

22
00:01:39,240 --> 00:01:40,870
就清空,这几步就是

23
00:01:42,450 --> 00:01:45,330
把数据库里面的内容给建立起来了

24
00:01:46,580 --> 00:01:47,850
有的话就清空

25
00:01:49,380 --> 00:01:51,210
设置,执行,一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值