理解代码分层架构

一、为什么要做代码分层

代码分层架构设计主要为了实现责任分离、解耦、组件复用和标准制定。

二、什么是代码分层架构

先通过软件分层架构来说起

1、什么是软件分层架构

软件分层架构是通过层来隔离不同的关注点。
理解代码分层架构_第1张图片
软件部署分层架构主要包括以下四个核心部分:
客户端层(Client):调用方,比如浏览器或 App。
应用服务层的网页服务器(Web Server):实现程序的运行逻辑,并从下层获取数据,返回给上层的客户端层。
应用服务层的缓存(Cache):加速访问存储的数据。
数据层(DB):存储数据。

软件分层架构就是通过层来隔离不同的关注点。

2、什么是代码分层架构

代码分层架构其实就是将软件“元素”(代码)按照“层”(代码关系)的方式组织起来的一种结构。
分层架构核心的原则是:当请求或数据从外部传递过来后,必须是从上一层传递给下一层。

代码分层架构示意图:
理解代码分层架构_第2张图片
controller层:主要是请求参数和请求结果的输入和输出,对各类基本参数的校验,或者不复用的业务简单的处理等。
service层:就是对具体业务逻辑进行处理的逻辑服务层。
manage层:通用业务处理层
(1)对service层通用能力的下沉
(2)对多个Mapper的组合复用
(3)对第三方平台数据处理的层
数据库层:就是数据访问层,与MySQL等进行数据交互。

分层的本质就是为了让相似变化在各自的层内变化,而不造成层与层之间的相互影响。

三、代码分层架构解决了什么问题

主要解决了以下两个问题:

1、如何快速拆解功能问题?

例如,一个功能需求问题通常都是笼统的复杂问题,我们一般都会将这个笼统的复杂问题拆分为多个层次的子问题来解决。通过解决多个层次的子问题,最终达成整体复杂的大问题。
所以,从功能性需求角度来看,代码分层本身就是一种拆解复杂问题的好方法。

2、如何提升代码的可扩展性?

分层架构可以将复杂的逻辑切分为多个层,这样大问题就变成了多个小问题,而且可以很方便地解决每个小问题。每个小问题更容易被抽象为一个组件,当组件功能需要扩充或替换时,修改代码的影响也被有效地控制在有限的范围内,这样组件自身的复用性也就提高了。

四、代码分层架构的优势和劣势

1、优势:
    1.1 只用关注整个结构中的其中某一层的具体实现
    1.2 降低层与层之间的依赖
    1.3 很容易用新的实现来替换原有层次的实现
    1.4 有利于标准化的统一
    1.5 各层逻辑方便复用
2、劣势:
    2.1 开发成本变高:因为不同层分别承担各自的责任,如果是高层次新增功能,则需要多个低层增加代码,这样难免会增加开发成本。
    2.2 性能降低:请求数据因为经过多层代码的处理,执行时长加长,性能会有所消耗。
    2.3 代码复杂度增加:因为层与层之间存在强耦合,所以对于一些组合功能的调用,则需要增加很多层之间的调用。

五、总结

代码分层架构设计的思维模型是简化思维,本质是抽象与拆解。
代码分层架构设计的目的是将复杂问题拆分为更容易解决的小问题,降低实现难度。
代码分层架构设计的原则和方法是通用方法,可以应用到其他需要分层设计的地方。

你可能感兴趣的:(java,代码分层架构)