我在哪里可以找到关于如何在Windows表单中完整实现MVC模式的好例子?
我在许多网站上找到了许多教程和代码示例(例如The Code Project和.NetHeaven),但其中许多更适用于观察者模式而非MVC。由于我要开发的应用程序是一个学校项目,所以我不愿使用像PureMVC或MVC#这样的框架。
我在哪里可以找到关于如何在Windows表单中完整实现MVC模式的好例子?
我在许多网站上找到了许多教程和代码示例(例如The Code Project和.NetHeaven),但其中许多更适用于观察者模式而非MVC。由于我要开发的应用程序是一个学校项目,所以我不愿使用像PureMVC或MVC#这样的框架。
我看过的最好的关于MVC解释以及为什么要构建MVC系统的文章是Jeremy D Miller的"Build Your Own CAB"系列。通过这个系列,你应该能够更好地理解你的选项。
也应该考虑Microsoft的Smart Client Guidance(CAB/Microsoft Composite Application Block)。它有点复杂,但适用于需要良好适配性的应用程序。
选择一个Winforms项目中的MVC/MVP实现值得一读的概述。许多人喜欢PureMVC。我从未使用过它,但下次我需要一个MVC框架时会考虑它。
"Presenter First"是一种软件开发方法,将模型视图表示器(MVP)设计模式和测试驱动开发的思想结合起来。它允许你从客户语言编写测试用例。例如:
当我点击“保存”按钮时,文件应该被保存,未保存的文件警告应该消失。同时,问问自己为什么要使用MVC。
一旦你明确了自己的目标,选择一种实现方式就变得更容易了。
更新:除了下面我之前的回答外,我建议阅读关于"Presenter First"方法的文章(特别是PDF文章)。
我建议使用MVP(实际上是PassiveView模式)而不是MVC。你不需要任何特殊的框架,这只是你组织代码的方式。
一个方法(通常我采用的方法)是将每个窗体分成三个实体:
示例代码(简单的伪代码,仅供说明):
interface IView
{
string Username { get; set; }
string Password { get; set; }
event EventHandler LogOnButtonClicked;
void InformUserLogOnFailed();
void MoveToMainScreen();
}
class Presenter
{
public Presenter(IView view)
{
this.view = view;
view.LogOnButtonClicked += new EventHandler(OnLogOnButton);
}
private void OnLogOnButton()
{
// we ask some service to verify the username/password
bool isLogOnOk = logOnService.IsUserAndPasswordOk(view.Username, view.Password);
if (isLogOnOk)
view.MoveToMainScreen();
else
{
view.Username = "";
view.Password = "";
view.InformUserLogOnFailed();
}
}
private IView view;
}
class Form : IView
{
public Form()
{
presenter = new Presenter(this);
}
public string Username
{
get { return TextBoxUsername.Text; }
set { TextBoxUsername.Text = value; }
}
public string Password
{
get { return TextBoxPassword.Text; }
set { TextBoxPassword.Text = value; }
}
public void InformUserLogOnFailed()
{
MessageBox.Show("Invalid username or password.");
}
public void MoveToMainScreen()
{
// code for opening another form...
}
private Presenter presenter;
}
微软复合接口应用程序块最初作为MVC实现(它实现了其他模式)而开始。然而,发布版本演变成MVP实现,可以说是对MVC概念的一种不同解释。
如果您愿意检查非常完整(并且有些复杂)的MVP实现代码,您可以在Microsoft Smart Client软件工厂的组件之一中找到MS-CAB。它附带源代码。您可以在此处找到它。祝好运!