-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
COLA 5.0 数据交互个人理解图 #557
Comments
另外之前你提到阿里开发手册那里DO 是Data Object,那是因为这个手册出现之前阿里内部大部分应用都是Spring MVC架构,在这个架构下用DO没问题,后来DDD流行了,DO用来表示infra层就不适合了。 |
1、在所有的DDD书里面都会有Domain Object,唯独没有Data Object。 |
我都告诉你了,DO,PO,VO,DTO,POJO 这套标准的是阿里的开发规范,具体看这里:https://www.cnblogs.com/EasonJim/p/7967999.html。 或者这里 https://github.com/chjw8016/alibaba-java-style-guide/blob/master/c4/s1.md 你如果没有看过这块,你先去看一下再来回复我。
总结:我想说的是,沟通的前提是大家对概念都有统一的认知,这个认知来自于出处的定义。你不能指望你公司新入职的人强行让人家把 DO 理解成 Domain Object。至于团队是否选择充血确实不重要,但是要确保 Domain 能随时参与到框架中,前提是 Domain 层要保证其独立性,不依赖任何其他层 |
我觉得用DO作为Data Object是没问题的,反而用PO不合适。你看Spring Data XXX都是基于Data来的,也就是把业务产生后的结果是作为数据(data)。虽然Spring没有提供一套完整的DDD框架,但是每个组件都是按照DDD思想设计的,这一点在https://spring.io/projects/spring-modulith尤其如此。只不过因为这个规范没有统一才会导致这样。我估计,随着发展,Spring也会有DDD相关的框架。 此外,千万不要把“领域对象”(也就是所谓的Domain Object)简单理解成就是一个简单对象(POJO)。“领域对象”更确切的说,是领域(业务)模型,是承载业务的,因此以后请称之为领域模型,模型是不加任何后缀的。并且是禁止用lombok设置 |
我认同! |
1、我就是阿里的你说看过没,阿里规范里定义的DO,你可以看我另外一个回复,已经说的很清楚了。 PS: Cola架构也不是阿里的内部DDD架构标准,很多团队并没使用Cola,包括很多电商中台团队,例如交易、商品、店铺这些核心业务 |
1、Spring Data xxx 你这个多少有点混淆,同一个简称在不同领域代表意思完全不一样,你不能因为Spring 这里是Spring Data xxx就推测出在DDD是这样就是对的,几个权威的DDD书里都没有Data Object这个概念,你们讲的DO纯粹是阿里规范定义了,Cola正好遵循了,你们认为应该是DO,这个算是阿里埋了一个坑。 PS: Domain Object 这个是很明确的,在交流DDD问题时候简称DO也没问题,DDD设计里就没有Data Object这个概念,如果你同国外同行交流你来个Data Object对方都不知道你说的是什么,另外DO数据对象这个词非常不明确,抛开业务层面定义来说,所有Object最终不都是Data吗? |
https://github.com/alibaba/COLA/tree/master/cola-samples/craftsman @caizi12 讲了半天你都没有讲清楚哪本“DDD开发圣经“中允许你用 DO 做 领域模型的后缀。 |
你看我之前的回复,DO我已经说了他的来由,再讨论已经没有意义了 |
1、还更大的一个场合,就是cola Issue吗,哈哈,一个cloa框架还能大的过DDD权威相关的书吗,cola在阿里内部都没有推广,国外有人知道cola吗,说出来可笑啊,不要固步自封只盯着cola, 建议多走出圈子学习学习。 PS 先不说我在Domain 层用不用后缀,但在Infra用DO做后缀,以及用DO解释为Data Object在DDD设计里完全是没有的,这是阿里及Cola埋的坑而已。 |
怎么命名团队内部统一就好了,重要的是要有面向对象编程的思想,可以参考《实现领域驱动设计》翻译作者的实践 https://github.com/mryqr-com/mry-backend |
那位老哥说的没错的,在很多DDD的书里都拿DO表示Domain Object,阿里开始那套DO,POJO规范出来的时候,DDD在国内还没流行起来 |
@felix9ia @caizi12 在有关DO后缀所表示的含义的观点上,两位的理由都很有说服力。DO后缀所表示的含义可以是Domain Object的缩写,即实体(Entity),也同样可以是Data Object(数据对象)。这两种含义其实是处于不同上下文中的,Domain Object处于DDD上下文,Data Object 处于防腐层下的外部依赖上下文,即DAO层。若发生歧义,则需要请出DDD中很重要的一个工具——统一语言(Ubiquitous Language)。在团队中,项目中或者一定范围内,使用统一语言消除歧义即可。
|
就像代码风格一样,我们在同一个项目中需要统一风格。但不同项目中又会有固执己见的代码风格,本就没有对错之分。至于哪种风格会成为主流,大家会在不断实践过程中作出选择。或是大一统某种分割,又或是仅仅幸存下了少数几种风格。 |
刚入坑的时候,有很多数据交互的疑惑,通过 example 也没能理解得到。现在自己用的顺手了,所以整理了一张图,和大家交流交流
关于类后缀相关的命名的问题,请参考官方示例 https://github.com/alibaba/COLA/tree/master/cola-samples/craftsman
The text was updated successfully, but these errors were encountered: