DDD领域驱动模型设计
什么是DDD
软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前,通常需要进行大量的业务知识梳理,而后到达软件设计的层面,最后才是开发。而在业务知识梳理的过程中,我们必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计的基本概念。
听起来这和传统意义的软件开发没啥区别,只是换了点新鲜的名词而已,其实不然。
该架构分成了Interfaces、Applications和Domain三层以及包含各类基础设施的Infrastructure。下图简略描述了它们之间的关系:
图1:领域驱动设计风格的架构草图(来自于DDDSample官网)
下图是详细架构:
图2:领域驱动设计参考架构
- Interface
负责向用户展现信息,并且会解析用户行为,即常说的展现层。
- Application
应用层没有任何的业务逻辑代码,它很简单,它主要为程序提供任务处理。
- Domain
这一层包含有关领域的信息,是业务的核心,领域模型的状态都直接或间接(持久化至数据库)存储在这一层。
- Infrastructure
为其他层提供底层依赖操作。
层结构的划分是很有必要的,只有清晰的结构,那么最终的领域设计才宜用,比如用户要预定航班,向Application的service发起请求,而后Domain从Infrastructure获取领域对象,校验通过后会更新用户状态,最后再次通过Infratructure持久化到数据库中。
那么根据这些我们就可以设计出自己得项目。当然需要灵活运用。
在此之前 我们先添加一些基础类库,然后分开层次。
(先睡觉了 明天继续)