MVC、MVP、MVVM架构模式与多层架构

MVC、MVP、MVVM架构模式与多层架构

个人博客地址:http://radarsoftware.cn/
date: 2019-07-21 22:52:35
tags:

  • MVC
  • MVP
  • MVVM
  • 三层架构(3-tier application)
  • 多层架构(n-tier application)

一、架构模式

1.1 概要:

MVC、MVP、MVVM是目前较为主流的三种架构模式,使用架构模式的目的是为了解决界面呈现和逻辑代码分离问题,其中MVP和MVVM都是在MVC的基础上发展而来的,引发发展的主要原因在于各个模块间的耦合度、模块测试引发的问题。

1.2 MVC :

MVC(全名:Model View Controller),正如名字一样MVC是使用Model、View、Controller三个模块设计创建 Web 应用程序的模式。
三个模块介绍及功能:
模型(Model):提供可视化元素的呈现、处理部分逻辑,包含数据和行为,可以认为是领域模型(domain)或JavaBean组件。通俗的讲就是用于网络请求、数据库、业务逻辑处理等操作并对应应用状态和业务功能的封装以及提供View模块显示的数据。如果对java熟悉的话Model模块最直观的部分就是JavaBean中的实体类和DAO类方法了。
视图(View):数据的展示、提供用户数据显示及操作的可视化界面。(比如jsp页面)
控制器(Controller):接受用户的输入指令并调用模型模块和视图模块去完成用户的需求。可以将控制器理解为模型模块和视图模块之间的桥梁,通过控制器管理两个模块的交互,是设计这类构架模式的基础分层目的的模块,一定程度上降低了耦合度、提高了代码重复利用率。
MVC架构模式

1.3 MVP :

MVP(全名:Model-view-presenter),是MVC演变而来的一种软件设计模式。与MVC有一定的相似性:Presenter负责逻辑的处理,Model提供数据,View负责显示。但MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部, 从理论上去除了View和Model的耦合。
模块介绍及功能:
Model:负责存储、检索、操纵数据,但与MVC的Model不同的是MVP的Model与可视化元素的呈现无关,与UI(view)处理逻辑也无关。
View:数据的展示、提供用户数据显示及操作的可视化界面,同时含有一个Presenter成员变量及逻辑接口
Presenter:处理与用户交互的负责逻辑。相比于MVC的controller,除了相同的事件触发控制功能,由于去除了View和Model的交互,所有的交互功能都发生在了Presenter(从Model传递需要呈现的可视化元素、View逻辑执行后发送响应等等)。由于解除了View与Model的耦合性,开发者可模拟测试View和Model中的任意一个模块,但明显的是Presenter接口与实现类的增加导致代码冗余度、复杂度会有明显增加。
MVP架构模式

1.4MVVM :

MVVM(全名:Model View ViewModel)MVVM是MVP的进一步发展与规范,实现了View和Model的自动同步。MVVM模式中,一个ViewModel和一个View匹配绑定,所有View中的修改变化,都会自动更新到ViewModel中,同时ViewModel的任何变化也会自动同步到View上显示(ViewModel中的属性都实现了observable这样的接口,当使用属性 的set的方法,都会同时触发属性修改的事件,使绑定的View自动刷新,一般由不同的前端框架平台封装例如VUE。),ViewModel和View之间的交互通过Data Binding完成, 而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低。
三个模块介绍及功能:
Model:负责存储、检索、操纵数据。
View:数据的展示、提供用户数据显示及操作的可视化界面,通过通过模板语法来声明在ViewModel模块完成数据绑定。
ViewModel:处理与用户交互的负责逻辑,核心是双向数据绑定,去除了View与Model的耦合关联,View可以独立于Model变化和修改方便测试,同时降低了代码的冗余度增加了重用度。
MVVM架构模式

二、多层架构

多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,具体显示为将业务划分为多个层。

2.1 3层架构(3-tier architecture)

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、 数据访问层(Data access layer)。
各层功能:
UI(界面层): 数据的展示、提供用户数据显示及操作的可视化界面。用于接收用户输入的数据和显示处理后用户需要的数据。
BLL:(业务逻辑层): UI层和DAL层之间的交互通道。对数据层的操作,对数据业务逻辑处理。
DAL:(数据访问层): 实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。
三层架构
大多数人三层架构易与架构模式混淆(尤其是MVC模式),从表示图可以直观看出它们间区别。架构模式(MVC)设计初衷是降低View与Model间的耦合度、降低代码冗余度、提高数据访问安全性。而三层架构是从整个业务应用出发,架构模式例如MVC只是三层架构中的UI(界面层)和BLL(业务逻辑层)展示。(很多博客文章表示MVC严格意义上 只是三层架构的UI界面层,MVC的Model模块实现了业务逻辑的处理和对数据层的操作)用图表示之间关系如下(下图表示基于B/S系统的三层架构,橙线表示对B/S系统的划分)。
在这里插入图片描述

2.2 多层架构(n-tier architecture)

简单的说多层架构是对三层架构的进一步划分,实际中有时“标准”的划分为三层架构会对维护调试带来很多麻烦,多层架构便是对三层架构中的UI(界面层)与BLL(业务逻辑层)进行进一步细分。

学期末学习了MVC架构模式有感,也算完成了自己的第一篇博客,当作知识积累日志。
参考学习文章:https://www.runoob.com/w3cnote/three-tier-architecture.html
参考学习文章:https://www.jianshu.com/p/ebd2c5914d20

MVCMVPMVVM是常用的软件设计模式,用于分离应用程序的不同组件,提高代码的可维护性和可重用性。以下是它们的概念和区别: 1. MVC模式(模型-视图-控制器):MVC模式是最古老也是最常用的设计模式之一。它将应用程序分为三个组件:模型、视图和控制器。模型负责处理数据和业务规则,视图负责展示数据给用户,控制器负责处理用户输入并更新模型和视图。MVC模式通过分离关注点,使得修改一个组件对其他组件没有依赖,增强了代码的可维护性。 2. MVP模式(模型-视图-展示器):MVP模式是基于MVC模式的演化,主要用于桌面和移动应用程序的开发。它与MVC的不同之处在于,视图和控制器被合并成一个展示器,展示器负责处理用户输入、更新模型并更新视图。MVP模式通过与视图分离,使得视图的变化不会影响展示器的逻辑。这样,在测试时可以更轻松地独立对展示器进行单元测试。 3. MVVM模式(模型-视图-视图模型):MVVM模式是一种用于构建用户界面的设计模式。它将视图的状态和行为抽象成一个视图模型,视图模型负责处理用户输入、保存视图状态、与模型进行交互,并通过数据绑定将数据自动更新到视图上。MVVM模式通过数据绑定机制,使得视图和模型之间的通信变得更简单,提高了可维护性和可重用性。它常用于Web前端开发和桌面应用程序的现代界面开发。 总结来说,MVCMVPMVVM是三种常见的软件设计模式MVC模式是最早的一种,将应用程序分为模型、视图和控制器,用于分离关注点。MVP模式是基于MVC模式的演化,通过将视图和控制器合并成一个展示器,便于测试和维护。MVVM模式是用于构建用户界面的设计模式,通过视图模型和数据绑定机制,实现了视图与模型之间的解耦。每种模式都有自己的特点和适用场景,根据具体需求选择合适的模式可以提高开发效率和代码质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值