zoukankan      html  css  js  c++  java
  • DDD-围绕业务逻辑编程

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

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

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

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

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

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

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

  • 相关阅读:
    小李子和他的水枪
    尼布尔的祈祷文
    牢骚太盛防肠断,风物长宜放眼量。
    常见浏览器userAgent请求头信息
    微信浏览器点击事件不生效怎么解决?
    2019上半年软件设计师上午考试真题
    360浏览器断网广告怎么去?
    谷歌浏览器打开一个新页面时使用新的标签
    Deep Learning in Bioinformatics
    TensorFlow Playground
  • 原文地址:https://www.cnblogs.com/bobdeng/p/8502789.html
Copyright © 2011-2022 走看看