[答疑]心脏的功能是泵血,心脏是个模块,所以“功能模块”没毛病啊!

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


有同学在我的视频下留言: 

图片

其实认真看我的视频或书就明白,这和我说的不是一回事。

这个留言有点新意,和以往的留言如“人能说话,嘴就是人的说话模块,没错啊!”是不一样的,所以我特地来说一下这个留言,它体现了开发人员容易出现的一些问题:

(1)不知不觉切换研究对象

我们先来看“以人为例,心脏的功能是泵血”。

我的视频或书里的图是这样的: 

图片

“以人为例”,这时候研究对象是“人”,这时候说“功能”应该说“人”的功能,例如“扛煤气罐”,“功能模块”指的是“扛煤气罐模块”、“扛煤气罐子系统”。

外面的老板、老婆、老爸老妈、要的就是这些“功能”,人的构造是心肝脾肺肾还是电路板,其实无所谓,甚至经过“机械飞升”的身体更受欢迎! 

图片

研究“人”的时候,“心脏”和“泵血”只是人的一种可选的设计方案,不是需求。而“功能”说的是需求。

这位同学在这里,不知不觉切换了研究对象。

“不知不觉切换研究对象”可谓开发团队的一个大毒瘤。有的人可能出于无知,可能出于维护面子,可能出于逃避责任,经常有意无意祭出这件法宝。

你和他谈组织流程,他和你谈某个类的代码,你和他谈某个类的代码,他又和你谈组织流程。

开头的图片说到心脏,我们把这个套路继续往小里用,也可以说:

以人为例,神经细胞的功能是传递信号,神经细胞是个模块,所以:神经细胞是传递信号模块,没毛病吧!

以人为例,原子的功能……

(2)把行为和类一一对应

假设我们不研究人这么大的范围,改为研究心脏。我们要生产或培养棒棒的心脏,“卖”给需要的人或动物。

既然已经是研究心脏了,这时候,“心脏”就是我们研究的目标系统。

“泵血”是心脏的功能,这个没问题,但是,心脏还有其他功能:回收废物、调节内分泌。

我们所研究的系统的名字却不叫“泵血系统”、“回收废物系统”、“调节内分泌系统”或者“泵血+回收废物+调节内分泌系统”,它就叫“心脏”。

同理,心脏的使用者要的就是心脏的功能和性能。心脏是由肉还是电路板构成,这也是可选的设计方案。

注意,此时心脏是我们所研究的系统,不是“模块”。

当心脏被“卖”出去,安装在人体内,这时心脏才会成为人的一个模块。

所以,“心脏的功能是泵血,心脏是个模块”这样顺下来的说法是不正确的。

同样,这个模块不叫“泵血模块”、“回收废物模块”、“调节内分泌模块”或者“泵血+回收废物+调节内分泌模块”,它就叫“心脏”。

我们可以再扩展开。假设心脏被安在某个公司员工(例如女秘书)身上,此时,这个女秘书也成为公司的一个“模块”,但是这个模块名字不叫“为老板做A+为老板做B+为老板做C模块”,她就叫“秘书”。 

图片

把行为和类一一对应,这样的思想有什么问题呢?

会导致得到的类是“泵血er”、“回收废物er”、“调节内分泌er”,得不到“心脏”这样一个类。

参见:

《软件方法》第8章>>

可能有的同学会想,这个不挺好吗,这不就是“微服务”吗?

是哦,好棒,什么也不用思考就解决了复杂问题,天上真的掉免费的午餐了吗?

参见:

《软件方法》第1章>>

《你的医书是假的!》>>

**********

基于STM32的循迹避障小车资料源码(高分项目),个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(
内容概要:本文详细介绍了SSM框架(Spring、SpringMVC、MyBatis)的相关知识,涵盖Maven项目管理工具、前端开发技术、HTTP协议及Tomcat服务器等内容。文章首先讲解了SSM框架的组成,包括Spring的IOC、DI、AOP等功能,SpringMVC的请求处理流程以及MyBatis的数据操作。接着介绍了Maven作为项目管理工具的作用,如依赖管理和项目构建,并详细描述了Maven的配置文件pom.xml的使用方法。此外,还探讨了HTTP协议的特点、请求响应格式,以及Web服务器Tomcat的基本概念和工作原理。最后,文章对前端开发技术进行了概述,包括HTML、CSS、JavaScript等基础知识,并简要介绍了Ajax技术。 适合人群:具备一定编程基础,特别是Java开发经验的研发人员,尤其是那些正在学习或使用SSM框架进行Web开发的工程师。 使用场景及目标:①理解SSM框架的工作原理及其各组成部分的功能;②掌握Maven的使用,包括项目创建、依赖管理、生命周期等;③熟悉HTTP协议的请求响应机制,能够处理常见的HTTP请求和响应;④掌握前端开发技术,如HTML、CSS、JavaScript等,能够进行简单的前端页面开发;⑤了解Tomcat服务器的工作原理及其配置方法。 阅读建议:本文内容丰富,涵盖了从后端到前端的多个方面,建议读者在学习过程中结合实际项目进行实践,尤其是在Maven项目管理和SSM框架的具体应用上,多动手操作,加深理解。同时,对于HTTP协议和前端开发技术,可以通过实际的网络请求和页面开发来巩固所学知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值