领域驱动设计
何为领域驱动设计
各行业业务人员他们知道所有的细节、所有的困难、所有可能出现的问题、所有的业务规则。这些就是:领域(Domain),我认为翻译成“业务”更容易让人理解。
领域驱动设计的原则,在任何开发过程中应用这些原则,开发团队以一种可维护的方式对领域内复杂问题进行建模和实现的能力,都将会得到极大提升。领域驱动设计结合 了设计和开发实践,展示了设计和开发如何协同工作以创建一个更好的解决方案。优良的设计会加速开发的过程,而开发过程中的反馈也会进一步优化设计。
公共语言:开发人员和产业专家沟通的语言
创建通用语言:避免冗长文档,使用uml图并每个模块使用一个,使用代码
模型驱动设计:使用面向对象语言,不推荐过程化编程
通用架构:MVC
实体:拥有固定id的对象
值对象:无固定id的临时对象,如果可共享,注意同步问题
服务:操作若干个对象的方法
模块:高内聚的一组实体,服务的组合
聚合:在模块对外只暴露一个根对象
工厂:封装对象创建
资源库:数据库
持续重构
保持模型的一致性:界定上下文,上下文映射,防奔溃层,隔离通道
参考书籍:《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling Complexity in the Heart of Software)