zoukankan      html  css  js  c++  java
  • 《干净架构读书笔记》——业务驱动编程

      Martin Flower说过,一个Web应用,从一个Controler->Service->DAO->数据库开始是个不错的开始(大意)。我相信很多项目可能都是这样的一个结构(我以前也是)。但这样的结构有个问题:Service层实际上应该是业务逻辑层,他依赖的DAO,这样就和DAO耦合在了一起。同时Service层作为一层,业务逻辑没有清晰剥离。因此有些人有疑问,在采用了这样的架构后,我们面向对象的特征去哪里了?怎么感觉都在写面向过程的代码呢?

      要解决这个问题,首先要把Service层进行分割。对业务来说,业务分为业务实体(数据)、业务用例(操作)两种。既然业务层应该和其他任何层都无关,那么他就应该能独立打包、发布,比如以Java的Jar形式发布。在开发工具中,比如idea,可以将业务逻辑划分一个单独的Module,这个Module里面基本不依赖任何第三方包(除了少出极为底层的,如Lombok、guava等)。这个业务层同时声明一些数据库等方面的接口,通过接口实现数据存取、通信等功能。通过依赖注入框架如Spring,将具体的实现进行注入。这样业务逻辑就完全剥离了出来。因为这部分包含了纯粹的业务逻辑,因此原则上需要100%的单元测试覆盖。

      这里写了个例子,演示如何在idea下面进行业务启动编程: https://github.com/bobdeng/ddd-quiz

  • 相关阅读:
    实现一个圆形进度条
    给你的jQuery项目赋予Router技能吧
    matlab新手入门(四)(翻译)
    matlab新手入门(三)(翻译)
    matlab新手入门(二)(翻译)
    matlab新手入门(一)(翻译)
    安装Matlab出现Error 1935错误解决方法
    Linux Ubuntu下Jupyter Notebook的安装
    lung 分割论文
    链表的回文结构
  • 原文地址:https://www.cnblogs.com/bobdeng/p/8927231.html
Copyright © 2011-2022 走看看