标签: supervisingcontroller

集合的MVP被动视图和监督控制器之间的实现差异

我已经开始围绕整个MVP模式,尽管我对单个对象做得很好,但是当涉及到集合时,它开始变得困难.

所以我们假设我们正在构建一个简单的WinForms应用程序,它由一个Form中的DataGrid组成,数据Model是一个简单的东西集合,其中这些东西有很多属性,而View实际上会显示它们:

模型

public class Person
{
    public string Name { get; set; }
    public DateTime Birth { get; set; }
    public bool IsCool { get; set; }
}

public class People
{
    public List<Person> Persons { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图

public interface IPeopleView
{
    List<People> ListOfPeople { get; set; }
}

public partial class PeopleViewImpl : Form, IPeopleView
{
    private DataGridView _grid = new DataGridView();

    public PeopleViewImpl()
    {
        InitializeComponent();
    }

    // Implementation of IPeopleView
    public List<People> …
Run Code Online (Sandbox Code Playgroud)

mvp design-patterns passive-view supervisingcontroller

5
推荐指数
1
解决办法
3832
查看次数

使用WinForms的Humble View/MVP和UserControls的集合

我正在重构一个WinForms(.NET 4)应用程序,该应用程序使用TabControl来包含UserControl - UserControl在每个TabPage中实例化,最终结果是每个选项卡中的编辑器.这些正在编辑一组项目,这些项目最终会被整个表单输入到正在编辑的对象中.

作为示例类结构:

  • class School
    • string Name
    • string Address
    • Course,每个具有几个相应的字段(Department,Name等)

(它实际上不是与学校相关的应用程序,但这个比喻有效.)

在视觉上,UserControls集管理Coursees,而父Form处理School信息.

现在,我有一个Form/School的演示者,以及UserControl/Course的演示者,每个人都有一个视图.然而,学校的主持人需要控制课程的一些信息.例如,为一个课程选择的选项限制其他课程中的选项.该School模型正在处理该计算,但它需要到达课程的演示者.

我在MVP讨论中找到这种关系的例子并没有太大的成功,这是我第一次采用MVP方法.处理这个有什么好办法吗?学校的主持人是否适合收集课程主持人的集合来代表该集?学校的观点是否应该收集课程观点的集合?(最终的UserControls必须以某种方式和某个地方附加到表单上,对吧?)

我的主要目标是(不出所料)提高可测试性和可维护性,到目前为止,这个过程的主要来源是Michael Feathers的"The Humble Dialog Box"和Jeremy Miller的"Build You Own CAB"系列.

.net mvp passive-view supervisingcontroller winforms

5
推荐指数
1
解决办法
1003
查看次数