zoukankan      html  css  js  c++  java
  • 《领域驱动设计》第一部分:让领域模型发挥作用 第三章:绑定模型和实现 阅读笔记

    内容概述

    绑定模型和实现

    这章开始,作者举了俩个案例。第一个案例中,技术分析人员和业务专家共同讨论,得出了一个详尽复杂的领域模型。但是开发人员无法将这种复杂的模型转化成可存储、可检索的且具有事务完整性的单元。于是开发人员专门针对程序开发的设计了新的模型。第二个案例中,系统之前的C++应用程序,只是把功能堆积在一起。设计就是在已有代码的基础上一个一个地堆积新功能,没有任何明显的泛化或者抽象。
    虽然第一个案例中进行了领域建模,但是由于实现模型和领域模型分离。最终产生的结果与第二个没有进行领域建模的项目相同,都是系统实现最终实现了系统功能,但是代码难以理解和维护。于此,作者提出领域设计的一个要求:

    领域驱动设计要求模型不仅能知道早期的分析工作,还应该成为设计的基础。

    3.1模型驱动设计

    没有领域模型的系统,无法利用知识消化沟通的好处。如果涉及复杂的领域就会使项目举步维艰。
    使用了领域模型,但是没有把代码实现和模型紧密联系起来的系统。导致在建模上花费的精力只能在项目初期用来做一些探索工作,而无法保证程序设计的正确性。
    有的设计方法提倡使用完全脱离程序设计的分析模型,但是作者认为如果整个程序设计或者核心部分没有与领域模型相对应,那么这个模型就是没有价值的。
    模型驱动设计不将分析模型和程序设计分离开,而是寻去一种能够满足这俩方面需求的单一模型。

    3.2建模范式和工具支持

    我没有理解作者在这一节要表达地内容。我也不喜欢所谓的面对对象程序设计。

    3.3揭示主旨:为什么模型对用户至关重要

    讲述一个关于IE浏览器收藏夹功能实现的案例:IE浏览器将用户收藏的每个网站存储为一个文件,网站名为文件名。这种实现模型与用户期待的模型不同导致的用户体验差。由此得出,程序设计应该基于一个能够反映出用户和领域专家所关心地基本问题的模型。

    3.4建模人员参与程序开发

    建模人员都必须花时间了解代码。每一个开发人员都必须学会用代码来表达模型,并且不同程度地参与模型讨论,与领域专家保持联系。

    总结

    模型的作用:1. 支持有效的实现;2. 抽象出关键的领域知识;
    系统中多个模型之间,应该尽可能一致甚至可以使用同一个模型,以便充分发挥模型的作用。达成这一目标的实现方法:

    • 开发人员应该根据模型写代码
    • 模型设计人员应该参与编码工作,亲身感受程序实现的约束

    我的观点和感受

    统一模型,这点笔者是有所感触的。在某公司实习期间,和PM的交流中会出现:

    产品经理:“在已有的基础之上增加X这个功能因该很简单,能很快完成吧?”
    开发人员: “代码不是这么实现的,所以新增这个功能的工作量很大。”
    产品经理:“那你们是怎么实现的?”
    开发人员:“balabala~。”

    然后,这个需求根据其重要和紧急程度性,要么经过较长的开发时间开发完成,要么就被推迟或者砍掉。
    如果多方参与到领域模型的设计,并在各自的工作中使用同一个模型。由此,增加双方的交流,提高沟通和工作效率。

    就文章写作,我认为第一节和这章的开始处内容重复。第二、三小节内容内容帮助很小。

  • 相关阅读:
    持续集成 自动化构建、测试、部署您的Coding代码
    MySQL主从 常见的错误及解决方案
    老王带你走过 Kafka 入门教程
    Spring Cloud Eureka 常用配置及说明
    关于智慧大数据中心平台建设思路
    工作经验是积累总结出来的
    程序员晋级CTO之路的8大准则
    Spring Cloud Feign 使用方法与性能优化
    Elasticsearch(ES)API 增删查改常用操作
    ELK 日志采集 实战教程
  • 原文地址:https://www.cnblogs.com/x2zh/p/10793395.html
Copyright © 2011-2022 走看看