Skip to content
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

我们之间DDD的不同之处 #5

Closed
lj19950508 opened this issue Feb 21, 2022 · 1 comment
Closed

我们之间DDD的不同之处 #5

lj19950508 opened this issue Feb 21, 2022 · 1 comment

Comments

@lj19950508
Copy link

我也在探索DDD的一种架构我发现我们之间大致是一致的架构 不过有略微的差别, 特此来讨论一下。
1.我在书中看到domain实体的属性不对外提供getter/setter方法, 只在构造时成立,在构造时通过调用内部private的 set方法来校验参数。(由于在基础层需要把 do 对象转为po对象, 我还是提供了getter方法,目前不知道有什么更好的方案)
2.我把vo与feignclient 提出单独的 rpc层 ,由 api层引用 , 这样可能对我后续微服务组成 引入的代价较小, 以及方便异构服务。
3.我设想是否引入 spring-boot时 应该 按模块引入, 比如 domain模块只引入 依赖导致需要的模块 , api模块引入web模块 (但是还没实现)
4.在领域事件这方面我还没有实现,想要参考您的代码。
以上, 感谢您的阅读,期待您的回复。

@louyanfeng25
Copy link
Owner

1.setter不开放是为了聚合根属性的修改都是具有实际业务的(危险操作)。从根本上来看,getter方法可以开放出来的,因为它本身并不会修改聚合根的属性(安全行为)。
2.rpc层我的做法是依赖api层的,rpc只定义openFeign的格式与熔断相关配置。具体的接口定义,微服务传递的实体等都是放在api包中,统一定义。逻辑上跟你差不多,不过包的定位与依赖顺序与你相反,你可以看一下我另外common-frame的结构
3.我现在的做法上其实已经按照这种规范在处理,不过web-starter的包里面包含的东西比较多,我没有做拆分,细粒度太小也不是好事。我还是按照sdk的形式进行了包的依赖管理。
4.领域事件目前demo中已经提供了常见的业务使用场景的常规解决方案,你阅读后有什么好的想法欢迎提交pr给我。
感谢阅读,感谢支持~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants