领域驱动设计?领域模型

468 阅读2分钟


一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

领域驱动设计?领域模型

前言

作为今日的增量学习内容:领域驱动设计-领域模型。有人跟我说贫血模型的时候,我一无所知,通过搜索查阅,才学习到,领域驱动设计,DDD。领域驱动设计,是一种方法论,是针对软件开发领域提出的一套系统与理论分析方法。

领域

领域驱动设计,其实是一种设计思想,一种方法论。其核心是领域模型。

领域,就是某一种“行业业务”的范围。就比如说管理用户登录,密码的用户领域,负责订单生成,流转的订单领域,都是具体的软件业务场景

数据模型

以往开发的经历中,面向对象编程的世界里,将所有的事物都抽象成类。事物的特征和行为抽象为属性和方法。然后通过算法对应业务进行驱动事物的数据作出变化。简单说,对象封装了数据和行为的东西。

比如一个订单,我们的设计模型可能是 controller 层,service层, dao 层, model 层。在 Service 层完成所有的业务逻辑处理,dao 层完成数据库的交互操作。

class order {
    name: string;
    count: number;
}
​
class OrderDao{
 updata(){
   user.updateCount()
 }
}
​
class OrderService {
  construction(userDao:UserDao){}
​
  async doCancle(){
    orderDao.updateCount()
  }
  async canCancle(){
    ...
  }
}
​
class OrderController{
  OrderService.doCancle()
}

如上代码设计,我们关注的是数据,以数据驱动业务,订单时数量的变更驱动业务。

领域模型

领域驱动是指系统设计是由领域业务来驱动。

领域模型,也称为概念模型,领域对象模型和分析对象模型。领域驱动设计,针对的是一个领域,是以行为为驱动的。是一系列业务行为的关联。领域驱动针对领域业务抽象出实体,然后考虑数据库层面的设计。

领域模型确保软件业务逻辑在一个模型里,提高可维护性,业务理解性和重用性。用例分析法是进行领域建模最简单的可行方式:

  • 获取用例描述
  • 寻找概念类
  • 添加关联,添加属性
  • 模型精化