博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC与MVP模式设计
阅读量:6880 次
发布时间:2019-06-26

本文共 1108 字,大约阅读时间需要 3 分钟。

hot3.png

MVC(Model View Controller)模式处理过程:

      用户在视图提供的界面上发出请求,视图把请求转发给控制器,控制器调用相应的模型来处理用户请求,模型进行相应的业务逻辑处理,并返回数据。最后控制器调用相应的视图来显示模型返回的数据。

214025_du4N_2261111.png

图 MVC处理过程

 

213919_e9F3_2261111.png

MVC的优点:

1、多个视图能共享一个模型。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和数据表示分离,同一个模型可以被不同的视图重用,所以大大提高了模型层程序代码的可重用性。

2、 模型是自包含的,与控制器和视图保持相对独立,因此可以方便地改变应用程序的业务数据和业务规则。

3、控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,控制器为构造应用程序提供了强有力的重组手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行业务逻辑处理,然后选择适当的视图将处理结果显示给用户。

MVP(model\view\presenter呈现)模式:

在MVP模式中视图和模型是完全分离的,他们通过Presenter进行交互

Presenter与控制器非常相似,但是它们也有一些的区别:

1、Presenter处理视图发送过来的用户操作(在MVC中视图自己处理了这些操作)
2、它用更新过的数据去更新模型
3、检查模型的更新
4、从模型中取数据然后将它们发送到视图中
5、将所做的更新告知视图
6、用Presenter渲染视图

其中,1,4,5,6条是和MVC的主要区别

MVP的优势

1、模型与视图完全分离,我们可以修改视图而不影响模型

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

MVP的缺点

      由于对视图的渲染放在了Presenter中,所以视图和Persenter的交互会过于频繁。还有一点你需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。比如说,原本用来呈现html的Presenter现在也需要用于呈现其他文件了,那么视图很有可能也需要变更。

 

 

转载于:https://my.oschina.net/zhangxuman/blog/1476673

你可能感兴趣的文章
python中struct.unpack的用法
查看>>
Java深、浅克隆(clone)
查看>>
如何在View上不用UIImageView重新绘制一张图片?
查看>>
实现控制器(Controller)
查看>>
好多年前写的一个C++事件回调工具
查看>>
python3使用logging日志记录
查看>>
servlet3中jar的web资源携带
查看>>
3D打印将对零售模式产生颠覆影响,能否抓住机遇
查看>>
不用加减乘除实现加法
查看>>
Android SD卡 文件或目录拷贝、复制、粘贴
查看>>
git命令与github使用(转主要看向远程仓库推内容)
查看>>
JAVA生成四位数的验证码
查看>>
讯飞语音错误码大全
查看>>
编译器错误消息: CS0433: The type 'global_asax' exists in both 'App_global.asax
查看>>
原生ajax显示php后台内容
查看>>
Android 富文本装饰器Spannable
查看>>
sync.Map源码分析
查看>>
error: invalid storage class for function
查看>>
seci-log 1.08 发布 增加snmp trap v2c和v3的收集
查看>>
AWK 文件处理计数
查看>>