简述:
看到大家评论的这么多,我目的达到。我放上去的代码,其实是有点值得疑义之处,所以我在标题后加[讨论版]的字样。拿上篇文章中"saucer"评论,他说的没错。其实Model View Presenter也是不固定的,web Client Software Factory使用的就是Mode View Presenter + Controller模式(MVPC模式),当然代码改进是必须的,此篇所表现的Demo,是一个MVP+C模式简易实现,不过因为没有加入Ioc,所以还是有值大家添砖加瓦的地方。ok.
观点认同方面:见贴子底部
代码部分:
首先,先写一段伪代码:
public interface IView
{
}
public class Presenter
{
IView view;
Controller controller;
}
public partial class TestPage: Page, IView
{
Presenter presenter;
}
public class Controller
{
Data data;
}
public class Data
{
}
那为什么要加上Controller呢?
一句话:加上Controller可以让多个Presenter 共享DataModel
那Controller 类中可以包括数据的缓冲,获取和数据的更新etc,其实Controller这时变成一个相对独立的控制器,当然也可以把Controller用作状态控制器
比如:一个Presenter向Controller发送Next(调用Next方法)
Controller根据当前的状态导航到相应的页面,他就可以通过调用一个导航服务对象来导航,Controller本身并不处理导航,Clear。其实学习完Web Client SofteWare Factory基本就明白了。
PresenterLayer:
































ViewLayer:



































ModelLayer: 代码同前篇文章
XML源:同前篇文章
Controller:





























讨论处[有关于观点认同方面]:
“我觉得MVP模式完是理化的方法, 在实际工作上完全不可能用, 试想asp.net的控件和winform的控件差别还是很大的,不可能完全一致 ” 评论者:dali
@dali
非常同意你的观点,只要界面稍微复杂点,用起mvp来是恼火的.况且lz说的好像也不是真正的mvp,mvp提倡所有的view要实现Iview,而将具体的界面调用委托给展示层,外表上非常的解偶,也就是说以前你winform写的程序,可以很好的转移到webform中,由于展示层和view中的控件已经实现解偶,所以winform和webform中控件的不一致对它的影响非常小,更由于它推荐的是事件委托,所以解偶还算比较彻底.但是,还是那句话,要是界面很复杂呢,比如充斥大量用户自定义控件和服务控件,这时开发起来就比较麻烦,效率会很低.
评论者:hehehe
针对以上所评:首先,我是不怎么同意的;其次,询问经常使用此模式的一些人
凌说:以上有一点可能不准确,wpf应该在web和winform都是使用一套控件
niwalker言:以上说法是错误的;不说别的,在我的项目中就已经用过多次mvp和mvpc模式了
嗯,欢迎大家侃侃