首页 > 其他分享 >设计模式,mvc,mvp,mvvm

设计模式,mvc,mvp,mvvm

时间:2022-12-20 20:24:50浏览次数:35  
标签:mvp mvvm 提供者 模型 presenter 视图 Presenter mvc 设计模式

mvc

model模型-视图view-控制器controller

视图可以直接访问模型,所以视图里面包括模型信息,mvc关注的是模型不变,所以在mvc中,模型不依赖视图,但是view是依赖model的

原理:

模型层改变时,视图层直接随之改变,视图层传送数据到控制层,控制层接受数据,编写业务逻辑更新模型层,从而再次更新视图

特点:

优点:抽离出controller,模块化程度高,新增编辑功能只需要添加一个controller

缺点:测试困难,view无法组件化

 

2.mvp

mvp是模型-视图-提供者 建立在mvc基础上

 

特点:

优点:视图和模型完全分离,可以修改视图,不影响模型

   可以更高效的使用模型,因为所有交互都在presenter中

   一个presenter提供者可以用于多个视图,而不需要改变presenter逻辑。这个特效十分有用,因为视图的变化总是比模型的变化频繁

   把逻辑放在presenter中,那么可以脱离用户接口做单元测试

   

缺点:提供者和视图的耦合度太高,一旦视图发生大改变,提供者Presenter随之改变

原理:

建立在mvc模型基础上,用presenter(提供着)取代controller(控制器),通信方向发生改变,视图和模型不再直接通信,视图和提供者双向通信,模型和提供者双向通信

在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用! 不仅如此,我们还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试--而不需要使用自动化的测试工具。

在MVP里,应用程序的逻辑主要在Presenter来实现

 

MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。

 

mvvm

模型-视图-视图模型,建立在mvp模型上,将提供者presenter(提供者)改成了ViewModel视图模型..代表:vue.js

 

 

 特点:

优点:简化测试,提供可维护性

缺点:不适合简单的图形界面,太复杂的视图模型维护成本高,数据没有办法断点调试

原理:

vm是模型和视图的桥梁,当模块层数据改变时,vm会检测到变化并通知视图层做相应修改。

 

 

 

 

https://blog.csdn.net/weixin_51258044/article/details/121927735

标签:mvp,mvvm,提供者,模型,presenter,视图,Presenter,mvc,设计模式
From: https://www.cnblogs.com/GoTing/p/16995000.html

相关文章

  • 设计模式之六大原则
    关于设计模式的六大设计原则的资料网上很多,但是很多地方解释地都太过于笼统化,我也找了很多资料来看,发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂,因此转载过来......
  • java中的模板设计模式【抽象类的最佳实践】
    本文主要讲述抽象类最佳实践,模板设计模式。老韩的介绍:示例代码如下:1/**2*需求:计算出执行一个job()方法,所需要花费的时间.3*使用模板设计模式【抽......
  • 新手 Android MVP 入门项目
    预览一下效果图,尽请期待......
  • 设计模式 - 桥接模式
    目录​实例​​​数据转换工具​​​桥接模式​​​概念​​​​角色定义​​​​典型代码​​​​具体实现​​​​总结​​​​源码​​实例数据转换工具​​Sunny​​​......
  • java的饿汉和懒汉设计模式
    本文主要讲述java的饿汉和懒汉设计模式饿汉和懒汉设计模式的目的:使得该类的对象,只能有一个,不允许其他类,创建该类的对象。饿汉设计模式示例代码如下:1publiccl......
  • 设计模式——策略模式
    一、定义它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的用户。二、特点封装了变化策略模式的Strategy类层次为Context定义了......
  • 设计模式——迭代器模式
    一、定义提供一种方法循序访问一个聚合对象中各个元素,而又不暴露该对象地内部表示和Foreachin功能相同Aggregate类:聚焦抽象类提供创建迭代器地方法ConcreteAggregatelei:......
  • 设计模式中的六种关系以及代码之间的对应
    强弱关系:依赖<关联<聚合<组合<实现<继承 一、依赖battle关联依赖定义对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之......
  • C#设计模式之策略模式
    原文链接:https://www.jb51.net/article/239469.htm策略模式所谓策略其实就是做一件事情有很多很多的方法。比如说一个商场要搞促销,促销的方式有可能有很多:打折啊,满100返......
  • 模板方法设计模式
    模板方法设计模式在之前的oa项目中,web.xml是一个臃肿的问题,使用注解开发可以有效解决还有一个比较臃肿的问题,一个servlet单表crud就对应了6个servlet类,这种开发方式,......