|
|
1
2
我通常有一个非常薄的视图,隐藏在界面后面,对演示者一无所知。视图是对用户操作抛出事件的视图。通常,视图所做的只是将UI特定于原语,或者有时将模型中的值对象(ddd意义上的值对象,而不是.net结构)转换为值对象,有时为更复杂的情况和重用而嵌套视图。用户控件有时有自己的视图和演示者结构。当您开始嵌套视图和演示者时,对象的实例化开始得到大量的工作,所以这通常是我开始寻找IoC容器的时候。 演示者通过界面了解视图,并直接与视图对话。它对查看事件作出反应,并执行大部分逻辑。视图和模型被保存到演示者中,因此其中的所有逻辑都是可测试的。 我看到的另一种方法是视图知道演示者,而演示者只通过界面知道视图。这就避免了为视图操作引发事件,因为视图可以直接与演示者对话。(我认为这在smalltalk世界中被称为MVC)presenter仍然是可测试的,这使您能够从视图到presenter进行数据绑定。我通常不使用数据绑定,所以对我来说这不是一个很大的优势。我希望像第一个例子中那样将东西解耦。 |