本文仅做个人记录。
项目需要一个顶层包,这和采用其他类型设计的项目没有区别。比如:
顶层包:com.mycompany.myprjname [myprjname为项目的名称]
每个限界上下文使用一个单独的工程来表示,这个功能的包命名在myprjname 下一层:
com.mycompany.myprjname.cumtomer.domain, [cumtomer表示“客户”这个上下文的主要包],基本应该不含类和接口的定义
com.mycompany.myprjname.cumtomer.domain.model,可包含实体,值对象,服务等,存储库接口,服务不单独设置包(可能导致贫血模型)
在下面可分模块,模块在customer下:
com.mycompany.myprjname.cumtomer.infrastructure 【基础架构包】
infrastructure下按照实际内容可分为:持久化,消息机制,网络访问等不同的包。如果工程不是很大,在这几个包下就不要再分包了。
这些包不参与领域模型的直接功能,定义到子包下没有什么影响。