0

我传统上实现了一个 Model-View-Presenter [Passive View],如下所示:

interface IView
{
string Title {set;}
}

class frmTextBox : Form, IView
{
...
public string Title
{
set { this.txtTitle.Text = value; }
}
...
}


class frmLabel : Form, IView
{
...
public string Title
{
set { this.lblTitle.Text = value; }
}
...
}

class Presenter
{
private IView view;
...
public void UpdateTitle
{
this.view.Title = "A Good Title";
}
...
}

并且我传统上只在IView接口中使用原始类型(int, string, bool),因为我一直明白您只需要在视图中使用原始类型。在 Repository(例如NHibernate)中,如果我想显示 a 中的项目列表DataGridView,我必须将通用集合(IList<T>)从 Model 传递给 Presenter。这是否违反了仅由原始类型组成的视图背后的规则,或者这在架构上是否可以?

即使我有一个数据传输对象 (DTO),它也更像是一个监督控制器,而不是我试图实现的被动视图样式。

想法??

4

2 回答 2

2

哇,也许我错过了很多。我从未见过视图仅限于显示原始类型。

我很想知道为什么使用这个限制以及它有什么好处?这并不是说“IMO 完全错误”,但我很好奇它的好处。我的信念是,现在计算机已经足够强大了,除非您针对特定的性能规范,否则开发人员为适应某些准则而努力的成本将是对资源的昂贵使用。

并不是说它本身就是任何背书。但是我看到的所有 MVC 文章都愉快地围绕着视图和控制器之间的类。由于 MVP 只是 MVC 的一种不同形式,我会说如果 MVC 没有问题,它应该是 MVP 吗?

于 2010-08-11T01:31:28.237 回答
2

存在模式可帮助您根据他人的经验设计解决方案。

它们只不过是形式化的模板。

使用任何能让你更有效率的结构,即使它不完全符合任意定义。

于 2010-08-11T02:13:31.413 回答