zoukankan      html  css  js  c++  java
  • 触摸MVP

    触摸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一点粗浅的理解。

     

    大江东去,浪淘尽,

    千古风流人物。

    故垒西边,人道是,

    三国周郎赤壁。

    乱石穿空,惊涛拍岸,

    卷起千堆屎。

     
  • 相关阅读:
    86. Partition List
    2. Add Two Numbers
    55. Jump Game
    70. Climbing Stairs
    53. Maximum Subarray
    64. Minimum Path Sum
    122. Best Time to Buy and Sell Stock II
    以场景为中心的产品设计方法
    那些产品经理犯过最大的错
    Axure教程:如何使用动态面板?动态面板功能详解
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258301.html
Copyright © 2011-2022 走看看