最近在看领域驱动相关的内容并打算付诸实践,很奇妙的是这个圈子到底咋回事儿,所有人都拿不出一个像样的代码示例?
空有一堆大道理,真正落实到实践都是一句话带过,就好比我告诉你成为李嘉诚就能成为香港首富,但是我不告诉你怎么成为李嘉诚,因为我也不知道,这不扯淡么?
首先我确实是个新手,我也看了不少书,我想要的,就是一个完整点的例子,让我可以结合书中那些被人复制了一遍又一遍晦涩难懂的大道理实际的体验一把什么叫DDD
不管什么洋葱架构,六边形架构还是什么依赖导致,所有的人都在告诉你,要以领域为核心,没人告诉你这些怎么体现在代码上,太扯了
那我就来说说我的理解,以领域为核心,那在代码上就应该体现为领域层不依赖于外部任何的层,所有外部层都依赖领域层。
顺着这个思路,领域层需要调用其他层获取数据时,应当定义一个接口,由外部获取的层去实现(通常是基础设施层)。
那么问题来了,既然领域层不依赖外部层,外部层获取到的原始数据对象,怎么转换成领域对象呢?
网上大道理一大堆,涉及到这个细节的要么就是没有,要么就是个空方法,让你自己去悟,这不纯扯淡么?
为什么我会有如此疑问,以java为例,有几个问题:
- 给领域对象的属性设置setter?这显然不行,我觉得这违背了领域驱动的初衷,而且我有些属性还是final的呢
- 给一个包含全部属性的构造方法?那我有好几十个属性,这不看上去难受得慌?而且这个方法就算有,理论上只应该被实现层调用,现在必须定义为public是不是有点太草率了?
- Builder类?从结果上是可以的,到从实际使用上也太搞了,到处都在build,我觉得这也不是建造者模式的初衷呀
麻烦来个大佬给我一巴掌叫醒我