深入解析领域模型与Coherence的应用实践
1. 丰富与贫血领域模型
在领域驱动设计中,Eric Evans提出领域对象应用于实现应用程序的业务逻辑,而非仅仅存储数据。然而,受J2EE规范影响,多数开发者习惯将领域对象变成属性包,把逻辑实现放在高层服务层。
Coherence并不强制使用丰富的领域对象,只要对象可序列化即可使用,贫血领域对象也能轻松运用。但创建自定义类时,最好在其中实现相关行为,而非将所有逻辑移至高层服务层,否则会如Martin Fowler所说,付出领域模型的成本却得不到收益。毕竟,贫血领域对象能实现的功能,使用更通用的数据结构(如Map)也能完成。
领域驱动设计中,核心构建块包括实体、聚合、值对象、服务、工厂和仓库。实体、聚合和值对象是数据对象,也是从Coherence角度看最重要的领域模型构件,会存储在Coherence中。
2. 实体与聚合
- 实体 :具有身份标识的对象,身份标识可以是自然属性(如国家代码),也可以是系统生成的代理属性。一旦分配给实体,身份标识在其生命周期内保持不变。
- 聚合 :特殊的复合实体类型,代表聚合根与依赖的弱实体之间的包含关系。例如,订单包含一个或多个订单项,单个订单项只有在订单的大背景下才有意义。
从Coherence角度看,实体和聚合是最重要的领域对象类型,通常与Coherence缓存一一对应。初学者常犯的错误是将Coherence当作内存数据库,创建过于细粒度的缓存。比如为订单和订单项分别配置缓存,在关系型数据库中这合理,但在Coher
超级会员免费看
订阅专栏 解锁全文
1527

被折叠的 条评论
为什么被折叠?



