盲人摸象,是汉语成语,贬义词,比喻看问题总是以点代面、以偏概全。
因为这是一个贬义词,所以是不好的,但是世界上并没有绝对好与绝对不好都东西,“盲人摸象”也不例外,如果一个单体系统过大,那么在以后都维护和开发中势必进一步增加其复杂度,最后导致单体系统超级复杂,任何都改动都很难轻易进行,因为体统过于复杂了,没有人能讲清楚所有的影响了。
当我们尝试为一个大的系统建模的时候,发现建立一个大的统一的模型困难重重,不同的业务部门对相同的单词的解读也是不一样的,比如销售部门和支持部门对客户和产品的解读。在以前我们倾向于去为整个业务建立一个统一的模型,但是后来我们意识到建立这样一个统一的模型非常的不实用而且维护代价昂贵。martin flower 在其DDD中引入了Bounded Context, 将大的domain 模型分解成若干个Bounded Context并明确地表明context 之间的关联管理,如同把大象分块了,而每个团队只能摸到大象的一个部分。
通过DDD 的Bounded Context,近看我们只能看到大象的一部分,这部分是内聚的,它就是具体的大象的尾巴,耳朵,腿。。。,而当我们从高空俯视的时候,整个大象又会清晰的展现在我的面前,这样的好处有
1)业务团队开发人员不需要了解整个大象,只需要将ta负责的大象的某个部分维护好就可以了
2)另外,如果大象的腿受伤了,那么只需要麻醉腿,不需要对整个大象进行麻醉,可以进行较为精确的靶向治疗
3)大象尾巴受伤了,并不影响整个大象的前行
当然这个世界上没有银弹,Bounded Context 的划分变得非常重要,而且这个划分是极其有难度的。
网友评论