mvc架构和mvp架构

简介: mvc,mvp其实是复合模式,是多个设计模式的组合:将多个模式结合起来形成一个框架,已解决一般性问题。 mvc: 既然mvc是复合模式,那么是由哪些设计模式组合的呢? 观察者设计模式:view和controller都是model的观察者(model的状态更新及时通知view更新,或者通知c做相应逻辑处理); 策略模式:controller是view的策略,所以view包含的控制逻辑就是选择策略,也就是选择控制器controller. 组合模式:view的自身实现应用了组合模式。

mvc,mvp其实是复合模式,是多个设计模式的组合:将多个模式结合起来形成一个框架,已解决一般性问题。

mvc:

既然mvc是复合模式,那么是由哪些设计模式组合的呢?

  1. 观察者设计模式:view和controller都是model的观察者(model的状态更新及时通知view更新,或者通知c做相应逻辑处理);
  2. 策略模式:controller是view的策略,所以view包含的控制逻辑就是选择策略,也就是选择控制器controller.
  3. 组合模式:view的自身实现应用了组合模式。

耦合性比较高,view model controller都可以相互访问。

model view controller 模式 视图 控制器。

在android中

  1. view 对应于 视图布局xml文件;
  2. model 对应于数据文件或者网络获取的数据体,业务逻辑,数据处理;
  3. controller 对应activity,fragment。

activity(controller)中获取数据(model)并将数据展示在view上面去。

activity将view和model进行分离,在activity中进行绑定和完成逻辑。

mvc的优缺点:

优点:

  1. 分工明确,使用mvc可以把数据库开发,程序业务逻辑开发,页面开发分开,每层具有相同特征,方便代码维护
  2. 松耦合,视图层,业务层分离,这样修改视图层(view),不用编译模型(model)和控制器(contorller)代码。业务流程规则改变修改模型层(model)。
  3. 可重用性强,多个view可以公用同一套model。

缺点:

view和model耦合相对较高,view可以直接访问model,view就会包含model信息,业务逻辑就会在view里面实现,更改view就比较困难,业务逻辑无法重用。

mvp:

m和v直接必须通过p才能访问,m和v不能直接进行交互。

model(数据层): 数据获取 对数据进行存储 获取(数据库操作,网络请求操作)

view(UI层) :activity,fragment 或者view,包含presenter成员变量,实现p的抽象接口,将对view上的业务逻辑放到p上实现,p调用view的逻辑将结果进行展示到view上。

presenter(业务逻辑层):用来解耦model和view。 

mvp有效降低view的复杂度,避免大量业务逻辑放在view上面,解除view和model的耦合,可扩展,可测试,保证系统整洁,灵活。view层不能和model层直接交互,必须经过p层来进行中转。也就是说数据和视图的逻辑控制都放在p层。

目标:一套逻辑适用不同UI。

mvp优缺点:

优点:

  1. model与view完全分离,我们可以修改view而不影响model,也就是解耦合;
  2. 交互逻辑主要是在presenter里面进行;
  3. presenter中的逻辑可以适用于多个view里面,无需修改p里面的代码;
  4. 有利于单元测试。

缺点:

  1. 定义大量的接口;
  2. view和presenter的交互过于紧密,view更新,presenter需要更新。

 

相关文章
|
6月前
|
前端开发 Java 开发者
MVC 架构模式技术详解与实践
本文档旨在全面解析软件工程中经典且至关重要的 MVC(Model-View-Controller) 架构模式。内容将深入探讨 MVC 的核心思想、三大组件的职责与交互关系、其优势与劣势,并重点分析其在现代 Web 开发中的具体实现,特别是以 Spring MVC 框架为例,详解其请求处理流程、核心组件及基本开发实践。通过本文档,读者将能够深刻理解 MVC 的设计哲学,并掌握基于该模式进行 Web 应用开发的能力。
1450 1
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
429 4
|
存储 前端开发 调度
Flux 与传统的 MVC 架构模式区别
Flux是一种用于构建用户界面的架构模式,与传统的MVC架构不同,它采用单向数据流,通过Dispatcher统一管理数据的分发,Store负责存储数据和业务逻辑,View只负责展示数据,使得应用状态更加可预测和易于维护。
|
设计模式 前端开发 数据库
哇塞!Rails 的 MVC 架构也太牛了吧!快来看看这令人惊叹的编程魔法,开启新世界大门!
【8月更文挑战第31天】《Rails中的MVC架构解析》介绍了Ruby on Rails框架核心的MVC设计模式,通过模型(Model)、视图(View)和控制器(Controller)三部分分离应用逻辑,利用Active Record进行数据库操作,ERB模板渲染视图,以及控制器处理用户请求与业务逻辑,使代码更易维护和扩展,提升团队开发效率。
234 0
|
人工智能 前端开发 Java
DDD四层架构和MVC三层架构的个人理解和学习笔记
领域驱动设计(DDD)是一种以业务为核心的设计方法,与传统MVC架构不同,DDD将业务逻辑拆分为应用层和领域层,更关注业务领域而非数据库设计。其四层架构包括:Interface(接口层)、Application(应用层)、Domain(领域层)和Infrastructure(基础层)。各层职责分明,避免跨层调用,确保业务逻辑清晰。代码实现中,通过DTO、Entity、DO等对象的转换,结合ProtoBuf协议,完成请求与响应的处理流程。为提高复用性,实际项目中可增加Common层存放公共依赖。DDD强调从业务出发设计软件,适应复杂业务场景,是微服务架构的重要设计思想。
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
存储 前端开发 测试技术
MVC、MVP、MVVM 模式
MVC、MVP 和 MVVM 是三种常见的软件架构模式,用于分离用户界面和业务逻辑。MVC(Model-View-Controller)通过模型、视图和控制器分离数据、界面和控制逻辑;MVP(Model-View-Presenter)将控制逻辑移到 Presenter 中,减少视图的负担;MVVM(Model-View-ViewModel)通过数据绑定机制进一步解耦视图和模型,提高代码的可维护性和测试性。
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
255 3
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
383 2
|
设计模式 前端开发 数据库
理解mvc架构
mvc架构
280 4