当前位置:  开发笔记 > 编程语言 > 正文

MVP和UserControls和调用

如何解决《MVP和UserControls和调用》经验,为你挑选了1个好方法。

我正试图让我的头脑绕过一些MVP stuf,因为它与用户控件有关.我正在使用.NET WinForms(或接近它的东西)和监督控制器模式(好吧,我想我:).

用户控件本身是MVP应用程序的一部分(它的View和一个关联的Presenter等).Presenter始终首先启动,然后启动模型,然后启动View(s).View构建其UI,其中一部分将是新的UC,即View.

现在(表单)Presenter需要了解UC Presenter,但我认为它对View的组成方式一无所知.例如,Presenter表格不知道UC是表单控件集合的一部分,也不应该.

此外,不应改变设计经验; Iow视图(表单)的开发应该只能从工具箱中选择一个用户控件并将其放在表单上.

那么,关于我的问题.首先,我的假设是否正确?有点误导?弄乱?WTF你在想什么?

其次,是否正确(足够?)使表单View调用UC视图,表单Presenter调用UC Presenter并有一些机制告诉UC查看它的Presenter是什么?这打破了我的"Presenter first"规则,但我不确定如何做到这一点.

很高兴接受任何其他想法,建议和评论.

- nwahmaet



1> Michael Mead..:

演示者应该被认为是表示层中的"自治状态".这意味着它负责确保视图的模型状态呈现是同步的.我提出这个问题的原因是因为MVP的"模式"经常在教条如何分离的观点中迷失.似乎这是Martin Fowler决定试图阐明围绕MVP模式的术语的一个原因.

我最喜欢的MVP风格是被动视图,所以我的回答是基于此.

我经常使用被动视图模式实现复合用户控件和表单.基本上有3种不同的配置:

    一个演示者,用于层次结构中的所有用户控件.使用界面展平视图.

    复合树中每个用户控件的一个演示者.每个父演示者负责实例化和初始化其子演示者.用户控件是在设计时创建的,并且能够在没有演示者的情况下运行(没有演示行为)

    复合树中每个用户控件的一个演示者.所有演示者都通过更高级别的控制器类松散耦合.控制器类负责构建演示者,连接它们并协调它们的事件.

虽然它是我最后的解决方案(因为它的复杂性),但我认为最后一个选项是您正在寻找的解决方案.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有