领域驱动设计(DDD:Domain-Driven Design)
Eric Evans的“Domain-Driven Design领域驱动设计”简称DDD,DDD是一套综合软件系统分析和设计的面向对象建模方法思想,DDD革命性在于:领域模型准确反映了业务语言,而传统J2EE或Spring+Hibernate等事务性编程模型只关心数据,这些数据对象除了简单setter/getter方法外,没有任何业务方法,被比喻成失血模型,那么领域模型这种带有业务方法的充血模型到底好在哪里?
提倡充血模型,实际就是让过去被肢解被黑crack的业务模型回归正常,当然这也会被一些先入为主或被洗过脑的程序员看成反而不正常,这更是极大可悲之处。看到领域模型代码,就看到业务需求,没有翻译没有转换,保证软件真正实现“拷贝不走样”。
DDD最大的好处是:接触到需求第一步就是考虑领域模型,而不是将其切割成数据和行为,然后数据用数据库实现,行为使用服务实现,最后造成需求的首肢分离。DDD让你首先考虑的是业务语言,而不是数据。重点不同导致编程世界观不同。
DDD是解决复杂中大型软件的一套行之有效方式,在国外已经成为主流。DDD认为很多原因造成软件的复杂性,我们不可能避免这些复杂性,能做的是对复杂的问题进行控制。而一个好的领域模型是控制复杂问题的关键。领域模型的价值在于提供一种通用的语言,使得领域专家和软件技术人员联系在一起,沟通无歧义。
DDD落地实现离不开Clean架构、六边形架构、CQRS、Event Source几大大相关领域。
目录:
EBC,即企业业务能力(Enterprise Business Capacity)。数字经济时代,企业管理已从ERP(企业资源计划)时代进入EBC(企业业务能力)时代。ERP不再只侧重“资源”或“计划”,正在慢慢从“企业”转移焦点,正在逐渐发展成为一种更加广泛的东西—EBC。
具有好的抽象思维,能够帮助你在B2B行业开发思维中有所突破,作为开发,不应该局限在当前模块,当前技术栈,跳出思维圈。
推荐阅读