JavaWeb - 常用的分层架构(MVC、MVP、阿里巴巴分层架构、... ...)

文章目录

  • 一、MVC
    • 1.MVC介绍
    • 2.MVC分析
    • 3.MVC执行流程
    • 4.MV分层的优点
  • 二、MVP
    • 1.MVP介绍
    • 2.MVP优点
  • 三、阿里分层架构
  • 四、DDD微服务


分享一篇 【Java注解+Java反射+Java类加载机制+javaweb 技术搭建MVC框架并用于项目】,更加深入的学习和配置使用所学知识点。


一、MVC

绝大多数现行的分层架构,都是在MVC分层架构的基础之上不断完善,针对特定的需求场景而演变的。理解MVC分层架构的必不可少的!!

1.MVC介绍

MVC是由Model(模型)、View(视图)、Controller(控制器)三层组成,是一种将业务逻辑、数据、界面显示分离开来的软件设计模式。其中:

  1. Model:功能的实现,数据库的管理,主要负责数据存取;
  2. View:用户能够看到的界面,主要负责数据展示;
  3. Controller:对请求进行处理,连接模型层和视图层。

下面是对MVC分层进一步的分析。

2.MVC分析

MVC分层中,每一层做好每一层的事,互不干涉。在客户端web开发中,就是将模型(M-数据操作)、视图(V-显示数据的HTML元素)之间实现代码分离,松散耦合,使之成为一个更容易开发、维护和测试的客户端应用程序。

一般的执行逻辑是:

  1. View 传送指令到 Controller ;
  2. Controller 完成业务逻辑后,要求 Model 改变状态 ;
  3. Model 将新的数据发送到 View,用户得到反馈。

MVC的交互流程:

JavaWeb - 常用的分层架构(MVC、MVP、阿里巴巴分层架构、... ...)_第1张图片

其中的Mode层就分为Service、Dao两部分:

  1. Service:负责业务数据的逻辑处理(对用户密码加密等)。
  2. Dao:数据访问对象,与数据库交互。

而在一般的MVC项目中,还有一个JavaBean对象,即实体类,常称为model、entity、domain,用于数据封装,提供给各层访问。

3.MVC执行流程

后端分层架构:Controller(服务调用)、Service(逻辑)、Dao(数据访问)

JavaWeb - 常用的分层架构(MVC、MVP、阿里巴巴分层架构、... ...)_第2张图片

4.MV分层的优点

这些优点是在JavaWeb初级开发的时候非常的合适,在之后学习JAVAEE开始,就又更好的解决方案。

  1. 耦合性低:视图层和业务层分离,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。
  2. 重用性高:多个视图能共享一个模型。
  3. 生命周期成本低:MVC使开发和维护用户接口的技术含量降低。
  4. 部署快
  5. 可维护性高

可查看基于MVC架构搭建的项目,点击我跳转


二、MVP

书上说可用于Android开发,具体为什么,看下面把。

在MVC分层的基础之上,这里就进行简单的分析即可理解明白。

1.MVP介绍

Model-View-Presenter,是MVC的改良模式(通信方向的改变)Presenter等价于Controller。MVC中的View能直接从Model中读取数据(视图与Model耦合),对应代码的重用并不友好。那么,能不能所有的数据都有经过Controller,使得View的访问更加规范?当然是可以是,这就有了MVP。

它具有如下特点

  1. View 与 Model 不通信,都通过 Presenter 传递数据。
  2. View 非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
  3. Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互。

JavaWeb - 常用的分层架构(MVC、MVP、阿里巴巴分层架构、... ...)_第3张图片

2.MVP优点

  1. 模型与视图完全分离,我们可以修改视图而不影响模型。
  2. 可以更高效地使用模型,因为所有的交互都发生在Presenter内部。
  3. 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁;
  4. 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。

缺点

视图和Presenter的交互会过于频繁,使得他们的联系过于紧密。也就是说,一旦视图变更了,presenter也要变更。


三、阿里分层架构

参照阿里发布的《阿里巴巴 Java 开发手册 v1.4.0(详尽版)》,将原先的三层架构细化而来。

它添加了Manager 通用业务处理层,这一层有两个作用:

  • 可以将原先 Service 层的一些通用能力下沉到这一层,比如与缓存和存储交互策略,中间件的接入。
  • 也可以在这一层封装对第三方接口的调用,比如调用支付服务,调用审核服务等RPC接口。

JavaWeb - 常用的分层架构(MVC、MVP、阿里巴巴分层架构、... ...)_第4张图片

相比于三层方式,添加了通用处理层对接外部平台。上下游对接划分的比较清晰。但是其核心业务逻辑层没有划分。

可用于业务逻辑不复杂的常用业务。


四、DDD微服务

这一点内容我还没深究,之后学习到了微服务,会回来更新 … …

你可能感兴趣的:(JavaWeb,成神之路,mvc,javaweb)