DDD 你是如此纠结!
估计2008年就从Jdon里面看到ddd了, 中间也看过很多DDD方面的帖子。 但是至今还是一知半解。 DDD中文名为“领域驱动设计”。看似简单的6个字,
确让很多人彻夜难眠,纠结无比?
今天又看了一遍:领域驱动设计之我见 http://www.jdon.com/39844/10 大家讨论的很激烈也非常精彩。
但是不得不说,对于我来说益出不大。 为什么这么说? 因为它完全给我一种“百家争鸣”的感觉,每个人写的东西都感觉有道理。导致我甚至分不清好与不好。 这也从侧面反映出DDD是多么的复杂,如此简单的业务,都难以统一大家的思想。更加不用说实际开发项目,实际项目比这可复杂多了,而且那还是团队开发,涉及多人!
帖子中对于 借书 这个业务到底放到哪个对象中? 有人说是reader,有人说是 card。 但是我确觉得这个完全无关紧要,以为我隐隐觉得这2个,实际上都代表了一个真正的领域对象。虽然我也不知道这个领域到底叫什么(好像废话)。
然后我又看了:DDD CQRS和Event Sourcing的案例:足球比赛 http://www.jdon.com/44815 这篇帖子。对于里面的建模,大家好像没有任何异议。 都认为他是对的, 是标准的。 我思考了一下,为啥没有异议? 我认为是这个足球比赛这个案列中他没有 类似于 借书 这样的业务。 而且案例名为“足球比赛” ,大家想当然的就将 比赛 抽象成了一个 类。 这样样就导致 "比赛" 这样一个动作,有了归属。 他直接归属于他自己(因为已经抽象成了类)。实时上我们如果将 足球比赛 案例,称之为球队管理,而比赛只是其中一个业务后? 那么比赛这个动作,归属于谁? 或者说图书管理系统案例中。 我们将它叫做"借书,还书管理"。那么还会有reader,card之争吗?
又比如对于银行转账系统中 a给b转账。 看到很多建模都有一个 转账服务, 里面有装转这个方法。 为啥会有个装转服务, 那是因为 转账这个动作, 放到哪个对象里都有点不合适, 而这个业务其实跟 足球比赛中 ab两队比赛却是如此雷同!
写的很乱,求大神解惑!