阅读:1741回复:0
什么是DDD领域驱动设计?什么是DDD? DDD全称为(Domain-Driven Design,简称DDD),领域驱动设计. 为什么要学习DDD领域驱动设计? 在早期软件开发,对于一些简单业务,只需要使用一个模块,编写多个业务逻辑就可以搞定。但是随着业务增长,当需要修改其中某一项功能,则修改困难,原因是 该功能可能会侵蚀其他代码模块。修改需要谨慎,投入时间成本,人力成本过高。DDD模型可以很好的解决这个问题。 DDD模型解决了什么问题? 粒度更小,架构更加清晰,业务需求变化的时候,系统架构也能随之变化。DDD所呈现的系统必然是高内聚,低耦合的,在业务系统中,不会因为修改A模块影响到了B模块的使用。 1.过度耦合 在系统创建初期,业务初期,功能对于基础设计都非常简单,普通的CRUD就可以满足业务需要,但是随着系统的迭代,业务逻辑变得复杂,此时系统的冗余程度也会随之增加。此时需要修改其中某个节点的逻辑,可能伴随着影响到其他模块的业务逻辑。此问题的根源出现于 系统架构不清晰,划分出来的模块内聚度低,高耦合。有一种解决方案,按照演进式设计的理论,让系统的设计随着系统的实现的增长而增长。不需要提前设计,就让系统伴随业务成长而演进。敏捷实践中的重构、测试驱动设计及持续集成可以对付各种混乱问题。 重构--保持行为不变的代码改善清除了额不协调的局部设计,测试驱动设计确保对系统的更改不会导致系统丢失或破坏现有功能,持续集成则为团队提供了同一代码库。事实上,在解决现实问题的时候,我们会将问题映射到脑海中的概念模型,在模型中解决问题,再将解决方案转换为实际的代码。上述问题 在于我们解决了设计到代码之间的重构,但提炼出来的设计模型,并不具有实际的业务含义,这就导致在开发需求的时候,其他同学不能自然的将业务问题映射到该设计模型。并不具有实际的业务含义。用DDD则可以很好的解决领域驱动模型到设计模型的同步、演化,最后再将反映了领域的设计模型转为实际的代码。注: 模型是我们解决实际问题所抽象出来的概念模型,领域模型则表达与业务相关的事实;设计模型则描述了所要构建的系统。 作者:TZX_0710 链接:https://www.jianshu.com/p/df2e3c5eccf2 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作者:TZX_0710 链接:https://www.jianshu.com/p/df2e3c5eccf2 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |
|