领域驱动设计是Eric Evans 于2003年提出来的,提出来主要是用来解决软件架构设计的一种思想。我们都知道,
软件复杂度的成因一般包括技术复杂度和业务复杂度,那么,怎样将一些公用的方法或者业务隔离出来,减少代码的冗余度,都成为
软件架构必须解决的问题。换句话说,领域驱动设计方法解决的就是从业务模型到设计模型的演化,使用领域驱动设计方法先从业务模型演化出设计模型,
再将反应了业务领域的设计模型转化为实际的代码。
一般来说,领域驱动设计包括三要素:专业知识、抽象能力、细分问题
专业知识:就是前期在与客户沟通需求过程中,学习到的关于业务方面的知识。这类知识并不仅仅只是对需求的理解,更多的要思考业务需求实际要解决的是什么问题。
抽象能力:一般指发现核心业务对象,简化问题空间的能力。将复杂的需求抽象出要解决的实际问题,比如系统录单,可以理解为信息入库,没必要一开始就搞清楚是用手机录还是电脑录。
细分问题:把业务问题细化为更小更容易处理的子问题。从业务角度上看,一个业务领域可以划分为多个子领域,那么对应的业务问题也可划分为更多小问题。
其中抽象和划分领域决定了系统设计的下限;专业知识,决定了系统设计的上限。