DDD领域驱动设计:示例项目

云的事情不好说 2024-05-23 21:26:38

通过这个小项目,展示如何在现实世界中使用领域驱动设计(DDD)。

核心领域(Core Domain)

在核心领域内部,有应用程序使用的最重要的类和接口。它有一个 DocumentService 类,这个类处理大部分的业务逻辑。然后有实体 Document 和 Metadata。这些用于存储关于文档的信息,如 id 或title。

为了保存上述的实体,定义了 DocumentRepository 和 MetadataRepository 接口。这两个接口的实现在基础设施层(Infrastructure)。

应用服务(Application Services)

只有两个应用服务。第一个处理文档的上传(UploadDocumentService),另一个提供文档的下载(DownloadDocumentationService)。它们可以通过使用基础设施中的 Repositories 和 Zip 类来实现这一点。

基础设施(Infrastructure)

Zip 类提供了压缩和解压上传文档的方法。Repositories 是核心领域中仓库接口的实现。它们使用文件系统来持久化数据。这三个类都是被动的(passive),只能由应用程序本身触发。

另一方面,restApis 是主动的基础设施组件。它们可以由用户从外部触发。例如,gradleRestApi 提供了上传和删除文档的方法,而 userRestApi 只对这些文档有读取权限。



0 阅读:1

云的事情不好说

简介:感谢大家的关注