• DDD-围绕业务逻辑编程


    当需求明确后,开始编程第一步是做什么?

    多年前,我的第一步是设计表结构。当时流行的工具是PowerDesigner,一个表结构设计工具。直到现在,我看到很多架构师、或者是技术Leader,依然是采用这种方式。我们称之为围绕数据库编程。

    后来出现了RUP,会画出用例图、时序图、类图设计图,这些图有利于理清设计思路。这些图的核心是关注业务逻辑和业务实体,而不是数据库如何实现。

    我们系统的核心是什么?是业务逻辑。而不是数据库、消息队列、微服务、REST、RPC等,这些都是细节实现方式。业务逻辑包括业务实体和用例,业务实体是描绘业务对象,包括属性和方法;业务用例是调用实体和其他细节(如存储)来完成具体用户功能。为了设计更加干净、容易修改的系统。我们应该围绕业务逻辑来编程,并且将业务逻辑和其他细节实现分开。这样代码才更容易修改。

    比如一个在线考试。题库、考卷等是业务实体,题库维护、产生考卷并答题是用例。这些东西可以先不依赖任何细节编写。在用例中需要调用数据存取功能的,比如对题库的读写,可以写个接口。先用Mock模拟接口,用TDD对业务逻辑、业务实体进行测试。等最后需要集成的时候,再决定用什么数据库、协议、框架等来组成适当的功能。而业务逻辑并不依赖这些细节,你可以随时修改细节实现而不影响业务逻辑。

    业务逻辑必须是简单的、原始的、不依赖任何细节的。比如业务逻辑并不知道数据库、消息队列、Controller、REST、Spring的存在,他不依赖他们。而是这些细节依赖业务逻辑。

    高层不应该依赖细节,细节应该依赖高层。

  • 相关阅读:
    leetcode hot 100- 84. 柱状图中最大的矩形
    leetcode hot 100- 221. 最大正方形
    leetcode hot 100-34. 在排序数组中查找元素的第一个和最后一个位置
    leetcode hot 100-剑指 Offer 37. 序列化二叉树
    leetcode hot 100-2. 两数相加
    leetcode hot 100-33. 搜索旋转排序数组
    leetcode hot 100- 98. 验证二叉搜索树
    leetcode hot 100-152. 乘积最大子数组
    leetcode hot 100-19. 删除链表的倒数第N个节点
    v-modal的使用。
  • 原文地址:https://www.cnblogs.com/bobdeng/p/8502789.html
Copyright © 2020-2023  润新知