`
totoxian
  • 浏览: 1074538 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论
阅读更多

触摸MVP

左直拳

我忽然关心起设计模式来了。

听说MVC是主流,现在又有个MVP。惭愧,我两样都不懂。落后啊落后,简直屎一堆。

不过这两天还是尝试着用了一下MVP

所谓的MVP,是Model View Presenter 的缩写。Model,模型,……可能是……处理数据对象的实例……真好……;View,视图,界面,UI层吧;Presenter,表示器。

这个P,表示器,是专门为视图而设计的。

既然有了视图,为什么还要搞个表示器?

ASPNET里面,页面跟代码分离,真是一大进步。可是这个代码,其实与页面还是结合得相当紧密的。比方说,这个页面的TextBox该怎么赋值,ListBox的选项变了又如何,代码不是要一一控制吗?因此,这个代码文件往往要面面俱到,写一大堆,复杂无比。很可能结果是,这个代码文件既包含了视图,也包含了很多逻辑处理的细节,也就是MVC模式里的CController(控制器)的一部分。

可是为什么不将这些东西都挪到控制器里面去呢?也许是页面与代码结合得太紧了,很难抽象出来。总不能,在控制器里直接操作页面的控件吧。

这样子有时候就觉得不太方便,页面代码太多东西了,一看头都大,想改也不好改。重用的话,可能拷贝、粘贴、修改是比较实惠的做法。

叉月革命一声炮响,微软给我们送来了MVP

依我的理解,Presenter(表示器)就是为了解决上述问题而诞生的。逻辑控制,大部分都放在上面,由它推送数据,视图只单纯的负责接收数据、显示数据、提交数据。

具体做法是

1、定义一个接口,里面规定了一些属性

2、视图,即页面代码文件除了继承象WebPage/WinForm,还继承这个接口

3、视图实现这个接口,将属性落实到自己的控件上。比如,一个String型的属性,可能会对应一个TextBoxText

4、Presenter里,声明一个此接口类型的私有对象。并在构造函数里接收或实例化此对象。(与此对应,视图里会创建一个Presenter对象,参数就是视图对象自己,this。)

5、现在,Presenter里控制这个私有对象的属性,也就等于是控制了视图上的控件。。。

代码分离了。视图清净了。

如果您想做一个差不多的视图,那么只须继承同一个接口就行了,或者是继承另一个差不多的接口,而表示器还是同一个,可能只须稍做扩展。

这是我对MVP一点粗浅的理解。

大江东去,浪淘尽,

千古风流人物。

故垒西边,人道是,

三国周郎赤壁。

乱石穿空,惊涛拍岸,

卷起千堆屎。

分享到:
评论

相关推荐

    2702-mvp232

    【标签】"ab 触摸屏2702" 提示我们MVP232可能与一款具有触摸屏功能的产品有关,而"2702"可能是触摸屏控制器的型号。在嵌入式系统中,这样的标签通常表示设备具备用户交互界面,可能是通过某种编程接口与主控芯片进行...

    Android-基于MVP框架遵循MaterialDesign设计的一款新闻阅读APP

    1. **Material Design实践**:了解和掌握Material Design的设计原则和组件,如何在Android应用中实现响应式布局、过渡动画和触摸反馈等。 2. **MVP架构**:理解MVP的结构和作用,如何在实际项目中应用,以及如何...

    MVP对SqLite的增删改查,其中集成了百度定位,侧滑删除。

    开发者可能使用了SwipeRefreshLayout或者自定义的触摸监听事件来实现这一功能,确保滑动操作的流畅性和准确性。 综合以上,这个项目是一个综合性的Android应用示例,涵盖了数据库操作、架构设计、第三方服务集成和...

    Android相机 开源 包括手动触摸对焦、取景模式

    例如,使用MVP(Model-View-Presenter)或MVVM(Model-View-ViewModel)可以帮助分离视图、业务逻辑和数据模型。 这个开源项目对于想要深入学习Android相机开发的开发者来说,是一个宝贵的资源,它涵盖了从基本的...

    Android MVP设计模式登录注册具体实现Material Design风格

    4. **触摸反馈**:设置按钮和其他可点击元素的触摸反馈,增强用户交互感。 **具体实现过程:** 1. 创建Model接口,定义获取用户信息和验证方法。 2. 创建View接口,定义登录注册界面需要实现的方法,如显示加载状态...

    STM32单片机项目实例:基于TouchGFX的智能手表设计(7)MVP架构下的交互逻辑设计

    基于TouchGFX的智能手表设计-MVP架构下的交互逻辑设计 基于STM32单片机的智能手表设计是近年来非常流行的项目实例之一,该设计结合了TouchGFX的图形用户界面框架和MVP架构下的交互逻辑设计。下面我们将详细介绍基于...

    包装机程序PLC200项目代码MVP

    在PLC200项目中,这可能通过触摸屏显示器或面板实现。 4. **故障诊断和安全机制**:为了确保设备的正常运行,程序中需要包含故障检测和安全保护功能。例如,当检测到异常情况(如超速、缺料等)时,PLC200应能立即...

    基于java+mvp+andiord开发的记账APP-源码

    这些组件会监听用户的触摸事件,更新UI显示,例如显示收支图表、账户余额等。 然后是“Presenter”。Presenter作为Model和View之间的桥梁,处理两者之间的通信。它接收View的请求,调用Model的接口获取或处理数据,...

    Android-就像微信朋友圈的图片浏览器可以弹性放大缩小集成了mvp.

    它会监听用户的触摸事件,如点击和滑动,然后通过接口通知Presenter来处理这些事件。 2. **Presenter**: 这是View和Model之间的中介,它接收View的请求,例如图片的加载和缩放操作,然后调用Model来执行实际的操作...

    Android-笔记一款以sqlitedatabase为数据库采用MVP架构的轻便易用的笔记app

    此外,还需处理触摸事件,实现动画效果,以及优化加载和保存性能。 **测试**:为了确保代码质量,应用应该包含单元测试和集成测试。对Model层的测试可以使用JUnit,对Presenter层则可以通过Mockito等库模拟View和...

    Android-PickPhotos, PickPhotos for Android Devices.It‘s a simple MVP demo..zip

    在Android中,View通常由Activity或Fragment实现,显示图片列表,允许用户进行选择,并处理用户的触摸事件。 3. **Presenter**:Presenter是Model和View的中介,它处理业务逻辑并控制数据流向。在PickPhotos应用中...

    千层面:Tesseract LASAGNA,现代PWA MVP框架

    Tesseract LASAGNA现代MVP框架Tesseract LASAGNA是Model View Presenter CMS,使用Google表格进行基本的数据库模型和管理。 没有数据库,只有纯HTML,PHP和jQ!功能从Google表格发布数据多国语言(无限)支持所见即...

    java8看不到源码-CanvasDrawView:自定义视图|触摸事件|点击|长按|手势|帆布|MVP架构|固体原则

    java8 看不到源码 用于创建“自定义画布绘制视图”并在画布上创建形状的 Android 项目 实现的功能: 创建自定义视图画布。 创建圆形、三角形和矩形等形状 在屏幕上显示按钮,在屏幕上的随机位置添加这些形状。...

    amx说明书(英文)

    ### AMX Modero ViewPoint MVP-7500/8400 无线触摸面板相关知识点 #### 一、产品概述 AMX Modero ViewPoint MVP-7500/8400无线触摸面板是AMX公司推出的一款用于中控系统的高级触摸设备。该设备不仅具备现代化的...

    birdsofcostaricaio:使用现代Android开发(Dagger2,MVP,Rx,材质等)的哥斯达黎加飞鸟Android应用程序

    这包括使用颜色、图标、动画等元素,以及触摸反馈、过渡效果等交互设计,让应用既具有功能性,又富有美感。 综合以上所述,"birdsofcostaricaio"应用充分利用了现代Android开发技术,将Dagger2的依赖注入、MVP的...

    Android UI框架

    DrawerLayout通过设置`setDrawerListener`或者使用`NavigationView`来控制抽屉的打开和关闭,以及响应用户的触摸事件。 接着,ViewPager 是一个强大的组件,用于展示可以左右滑动的多个页面。它常与Fragment一起...

    touchGFX学习笔记.docx

    这个框架采用Model-View-Presenter(MVP)架构,帮助开发者创建高效且响应迅速的GUI应用。 MVP架构的核心组成部分如下: 1. **View**(视图):这部分负责描述用户界面的布局和组件,例如屏幕上的按钮、图像等。在...

    Android例子源码ClipPicture(仿微信截图相似度99%)

    例如,开发者可能会使用MVP(Model-View-Presenter)或者MVVM(Model-View-ViewModel)架构来分离业务逻辑和视图展示,使得代码更加模块化。 总结来说,"Android例子源码ClipPicture(仿微信截图相似度99%)"涵盖了...

    可拖拽View,仿墨迹天气城市管理.zip

    【标题】"可拖拽View,仿墨迹天气城市...同时,这也是一种实践Android MVVM(Model-View-ViewModel)架构或者MVP(Model-View-Presenter)架构的好机会,因为这样的功能通常需要在视图和业务逻辑之间建立清晰的分离。

    Android应用源码之拖动 Button 显示效果-IT计算机-毕业设计.zip

    10. **代码结构**:良好的代码组织和设计模式,如MVP(Model-View-Presenter)或MVVM(Model-View-ViewModel),可以帮助管理复杂的交互逻辑,保持代码的清晰和可维护性。 总之,这个毕业设计项目涵盖了Android应用...

Global site tag (gtag.js) - Google Analytics