我传统上实现了模型 - 视图 - 展示器[被动视图],如下所示:
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
)中的原始类型,因为我一直都知道你需要使用原始类型仅在视图中。在存储库(例如NHibernate
)中,如果我想在DataGridView
中显示项目列表,我必须将一个通用集合(IList<T>
)从模型传递给演示者。这是否违反了仅由原始类型组成的视图背后的规则,或者这在结构上是否正常?
即使我有一个数据传输对象(DTO),这将更像是一个监督控制器,而不是我试图实现的被动视图样式。
思想??
答案 0 :(得分:2)
我有兴趣知道为什么使用这种限制以及它的好处是什么?这并不是说“IMO完全错了”,但我很好奇它的好处。我的信念是计算机现在足够强大,除非你针对的是特定的性能规范,否则开发人员为了适应某些指导原则而付出的代价将是昂贵的资源使用。
并不是说它本身就是任何认可。但是我见过的所有MVC文章都乐于在视图和控制器之间进行类编辑。由于MVP只是一种不同形式的MVC,我会说,如果它不是MVC的问题应该与MVP一起使用吗?
答案 1 :(得分:2)
模式的存在可以帮助您根据他人的经验设计解决方案。
它们只不过是形式化的模板。
使用任何可以提高效率的结构,即使它不能完全适合任意定义。