分离Windows窗体和类C#

时间:2010-12-14 03:12:10

标签: c# winforms

我正在寻找一种设计C#应用程序的方法。我理解3层模型,但是如何在一个好的C#设计中应用它。

我看了一些asp.net mvc教程,但我正在寻找基于Windows窗体的教程。

是否有任何书籍或网站可以学习如何实现这一目标?

3 个答案:

答案 0 :(得分:3)

我认为traditional MVC对WinForms来说太过分了。表单是视图,很少需要单独的控制器。该模型只是一个类(通常实现INotifyPropertyChanged)。您可以使用数据绑定来通知视图模型已更改。

重点是最小化按钮下的代码。如果是表单代码,它应该是(a)特定于UI或(b)委托对模型的调用。任何业务逻辑都应该在模型中或模型所依赖的类中。

避免将模型设为God Object。它可以在内部委托给其他类。

编辑:您可能需要考虑将绑定数据移动到模型拥有的单独对象中。我打电话给Presentation Model,但我不想在Fowler的口中说出来。

EDIT2:重要 - 模型必须具有 NO KNOWLEDGE 视图和无UI代码(例如对话框)。

答案 1 :(得分:1)

首先你应该知道的是,设计模式并非一刀切,因此没有“实现设计模式的方法”。

如果你只是指三层模型,那么MVC是不错的选择,因为它清楚地将每一层与另一层分开,因为Windows表单开发寻找Entity Framework(或只是LINQ)的教程,它们沿着处理逻辑的类应用程序,成为您的模型层,所有表单,沿着用于呈现数据的类,是您的视图,当然,用户控制器很好......那就是您的控制器。

我建议您查看DoFactory网站,该网站涵盖了许多设计模式。

另外我应该指出,你可能找不到doFactory中的实现,这只是一堆设计模式的参考。 JIC。

答案 2 :(得分:0)

如果您使用的是Win Form,我建议您使用MVP模式。还有一个模式MVVM(主要用于WPF和Silverlight),但我不知道它是否适用于Win Forms。