认识mvc,mvp,mvvm

MVC

简介

使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

  • M model 模型 模型model用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法,会有一个或多个视图监听此模型。一旦模型的数据发生变化,模型将通知有关的视图。
  • V view 视图 视图view是屏幕上的表示,描绘的是model的当前状态。当模型的数据发生变化,视图相应地得到刷新自己的机会。
  • C controller 控制器 控制器controller定义用户界面对用户输入的响应方式,起到不同层面间的组织作用,用于控制应用程序的流程,它处理用户的行为和数据model上的改变。

两种模式

1.互动模式

1)view传送指令到controller。

2)controller完成业务逻辑后,要求model改变状态。

3)model将新的数据发送到view,用户得到反馈

用户也可以直接向controller发送指令,比如:在浏览器上直接输入网址。

2.实例

1)用户可以向view发送指令,view直接要求model改变状态。

2)用户直接向Controller发送指令,再由controller发送给View。

3)controller非常薄,只起到路由的作用,view层非常厚,业务逻辑都部署在view。

优点

低耦合,高重用,生命周期成本低,部署快,可维护性高,有利于软件工程化管理

1.低耦合

视图层,业务层,模型层分离,运用MVC的应用程序的三个部分是相互独立的,改变其中一个不会影响到其他两个。

2.高重用 

很多数据可能用HTML来表示,但是也有可能用安卓来表示,而这些表示所需要的是改变视图层的实现方式,而控制层和模型层无需做任何改变。

3.生命周期成本低 

MVC使开发和维护用户接口的技术含量降低

4.部署快 

使用MVC模式使开发时间得到相当大的缩减,它使程后端序员集中精力于业务逻辑,前端程序员集中精力于表现形式上。

5.可维护性高 

分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。

6.有利软件工程化管理 

由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型经行处理,然后选择视图将处理结果显示给用户。比如:pc端视图与手机端视图是两种完全不同的布局,这里控制器就能选择合适的视图返回给用户。

缺点

没有明确的定义,不适合小型,中等规模的应用程序,增加系统结构和实现的复杂性,视图与控制器间过于紧密的连接,视图对模型数据的低效率访问,一般高级的界面工具或构造器不支持模式

1.没有明确的定义

完全理解mvc并不是很容易,使用mvc需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格分离,这样也给调试应用程序带来一定的困难。每个构建在使用之前都需要经过彻底的测试。

2.不适合小型,中等规模的应用程序

花费大量时间将mvc应用到规模并不是很大的应用程序通常得不偿失。

3.增加系统结构和实现的复杂性

对于简单的界面,严格遵循mvc,使模型,视图和控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

4.视图与控制器间的过于紧密的连接

视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

5.视图对模型数据的低效率访问

依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

6、一般高级的界面工具或构造器不支持模式

改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,会造成MVC使用的困难。

 

MPV

简介

MVP模式是MVC的一个演化版本,MVP能够有效的降低View的复杂性,避免业务逻辑被塞进View中,有效降低View层的厚度,MVP模式会解除View与Model的耦合,同时又带来了良好的可扩展性,可测试性,保证了系统的整洁性

  • M Model 模型负责数据的检索,持久化等操作。
  • V View 视图 负责UI的绘制和用户的交互。
  • P Presenter 交互器 作为Model和View的中间协调部分,负责两者之间的业务逻辑处理。

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向

1) 各部分之间的通信,都是双向的。

2) View 与 Model 不发生联系,都通过 Presenter 传递。

3) View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

优点

1.view和model完全隔离

2.presenter与view的具体实现技术无关

3.可以对view层进行模拟测试(model与view层松耦合)

缺点

由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。

 

MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。

 

相关文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVC(Model-View-Controller)、MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel)是常见的软件架构模式,用于组织和管理应用程序的代码。 1. MVC(Model-View-Controller): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Controller(控制器):处理用户输入,并根据输入更新模型和视图。 在MVC中,模型和视图是相互独立的,通过控制器来协调数据的更新和视图的更新。用户的输入首先由控制器处理,然后控制器更新模型的状态,最后模型的变化会反映在视图上。MVC模式可以有效地分离应用程序的逻辑和界面。 2. MVP(Model-View-Presenter): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Presenter(展示器):作为View和Model之间的中间人,处理用户输入并更新模型和视图。 在MVP中,Presenter负责处理用户的输入,并根据输入更新模型和视图。View只负责显示数据和将用户输入传递给Presenter,而不直接与模型交互。这种分离使得视图和模型可以独立开发和测试。 3. MVVM(Model-View-ViewModel): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - ViewModel(视图模型):作为View和Model之间的中间人,处理视图的状态和行为,并将数据从模型转换为视图可用的形式。 在MVVM中,视图通过绑定(数据绑定)与视图模型关联,当模型的状态发生变化时,视图模型会自动更新视图。这种双向绑定使得视图和模型始终保持同步,减少了手动更新视图的代码量。 总结来说,MVCMVPMVVM都是用于组织和管理应用程序的代码,它们都有各自的优势和适用场景。选择哪种架构模式取决于应用程序的需求、团队的技术背景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值