什么是领域驱动设计?
领域驱动设计是一种思维方式、也是一种优先任务,它旨在加速那些必须处理复杂领域的软件项目开发
为什么要做领域建模?
代码提供灵活性和扩展性
领域建模最大的价值是提供了一种通用语言,这种语言将领域专家和技术人员联系在一起的纽带
第一部分 运用领域模型
第一章 消化知识
1.1 有效建模的要素
- 模型和实效的绑定
- 建立了一种基于模型的语言
- 开发一个蕴含丰富知识的模型
- 提炼模型
- 头脑风暴和实验
1.2 知识消化
- 知识消化并不是一项孤立的活动、他一般是在开发人员的领导下由开发人员与领域建模专家组成的团队一起合作
1.3 持续学习
- 通过持续学习团队成员、开发人员、领域专家建立一种共同的语言、形成有效的反馈闭环
1.4 知识丰富的设计
- 我们从一个非常简单的领域模型开始学习
/*修改前的代码*/
public int makeBooking(Cargo cargo, Voyage voyage){
double maxBooking = voyage.capacity()*1.1;
if((voyage.bookedCargoSize()+ cargo.size())>maxBooking){
return -1;
}
int cofirmation = orderConfirmationSequence.next();
voyage.addCargo(cargo,confirmation);
return confirmation;
}
/*修改后的代码*/
public int makeBooking(Cargo cargo, Voyage voyage){
if(!overbookingpolicy.isAllowed(cargo,voyage)){
return -1;
}
int cofirmation = orderConfirmationSequence.next();
voyage.addCargo(cargo,confirmation);
return confirmation;
}
public boolean isAllowed(Cargo cargo,Voyage voyage){
return (cargo.size()+ voyage.bookedCargoSize())<=
(voyage.capacity()*1.1);
}