SwD*_*n81 17 c# oop mvp user-controls design-patterns
我正在尝试使用MVP模式,我遇到了一个设计问题.我正在开发一个具有多个UserControl的应用程序.UserControls本身彼此无关,只代表实际模型的子集.根据我的阅读,人们倾向于说每个视图应该使用一个Presenter.这似乎有道理,但如果我有30个UserControls,我真的想要30个演示者吗?另一方面,如果我有1个Presenter和1个View代表整个"应用程序"视图,那么我将拥有膨胀的View和Presenter界面.然后每个View都必须实现与它无关的方法.我的问题是,有没有更好的方法来处理多个UserControls,或者我应该为每个View创建一个Presenter?
Nik*_*vic 18
您应该为每个控件做一个演示者,因为:
通常提到的两个问题与"每个控件的演示者"的决定有关:
在这些方法中的每一个中,控件彼此通信而不彼此了解
Cha*_*hap 14
将一个对象中相关的代码分组会更有意义.因此,在这种情况下,如果视图是相关代码的特定分组,那么演示者也将模仿这些分组.要为不同视图创建"全局"演示者,可以将不相关的代码分组到一个对象中.它肯定会使演示者的界面变得臃肿.查看单一责任原则.
现在,您可以拥有一个Presenter Manager类,它可以让您通过继承访问每个Presenter接口(如接口隔离原则状态)(具有实现许多演示者接口的全局具体演示者......这违反了单一责任) )或聚合(为每个接口提供单独的演示者并获取函数......因此全局接口将是get函数)或两者的组合(全局演示者在某种程度上是适配器).
我认为最好的解决方案只有30个不同的主持人.