一起养成写作习惯!这是我参与「掘金日新计划 · 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()
}
如上代码设计,我们关注的是数据,以数据驱动业务,订单时数量的变更驱动业务。
领域模型
领域驱动是指系统设计是由领域业务来驱动。
领域模型,也称为概念模型,领域对象模型和分析对象模型。领域驱动设计,针对的是一个领域,是以行为为驱动的。是一系列业务行为的关联。领域驱动针对领域业务抽象出实体,然后考虑数据库层面的设计。
领域模型确保软件业务逻辑在一个模型里,提高可维护性,业务理解性和重用性。用例分析法是进行领域建模最简单的可行方式:
- 获取用例描述
- 寻找概念类
- 添加关联,添加属性
- 模型精化