知识卡片
仓储抽象隔离领域与持久化
内容
业务逻辑按三个概念组织:实体是领域里的名词(比如”书”),服务承载用例(比如”把书加进目录”),仓储是领域层访问数据的抽象。关键设计决策是仓储接口定义在领域层,具体实现(内存 map、关系数据库,随便什么)放在持久化层去满足这个接口——领域层因此完全不知道数据到底存在哪、怎么存的,换一种存储方式只需要换一个实现类,业务逻辑代码一行都不用动。发散:这就是六边形架构/端口适配器模式的核心思想在具体代码里的样子——把”业务规则”和”业务规则依赖的技术细节”用接口分开,谁在中心谁在外围一目了然:领域层定义契约,基础设施层去满足契约,而不是反过来。
参考来源
《Cloud Native Spring in Action》第3章《Getting started with cloud native development》