Spiga

随笔档案 - 2011年11月

领域驱动设计学习成果分享

2011-11-13 18:52 by netfocus, 2240 visits, 网摘, 收藏, 编辑
摘要:创建领域对象采用构造函数或者工厂,如果用工厂时需要依赖于领域服务或仓储,则通过构造函数注入到工厂;一个聚合是由一些列相联的Entity和Value Object组成,一个聚合有一个聚合根,聚合根是Entity,整个聚合被看成是一个数据修改的单元,也就是说整个聚合内的所有对象要么同时被保存,要么都不能保存,即保存到数据持久层时必须以覆盖的方式来保存,而不是追加方式或合并的方式来保存,否则无法确保聚合内的对象的数据一致性。另外,整个聚合的不变性约束由聚合根负责维护。作为推导的一个结论:我们不能只保存一个聚合内的一部分对象;聚合内的所有实体和值对象应该总是一起被取出来一起被保存,因为一个聚合是一个数 阅读全文

关于软件的任务到底是什么的思考

2011-11-02 23:14 by netfocus, 1382 visits, 网摘, 收藏, 编辑
摘要:阅读本文需要有DDD,DCI的知识背景。 首先,我觉得软件是用来被用户使用的,也就是说软件是用来帮用户完成一些事情的。从下面的用例图可以很好的理解用户与软件的关系: 上图是超市里的一个营业员处理一笔销售的一个用例。从这个用例我们可以清楚的看到营业员和系统之间的一个交互。从中我们可以清晰的得出系统该做什么:makeNewSaleenterItemmakePayment这三个操作可以理解为用户希望软件为她做的三件事请。最近我惊奇的发现,DDD和DCI的一个巨大差别,让我不得不拿出来和大家确认。那就是:1)DDD强调软件不应该实现整个用例的交互过程,而应该只建立一个排除软件使用者的领域模型,该领域模 阅读全文