我在理解MVC模式时遇到了一些麻烦.我确实理解我们正试图将GUI与业务逻辑分离,尽管我在理解方面遇到了问题.
根据我的理解,这View是用户看到的.所以它通常是窗口/窗体.的Controller是其间的View和Model.控制器将使数据在两个方向上"流动".它还会在需要时保持状态(如果我有一个包含5个步骤的向导,那么Controller确保它们以正确的顺序制作是负责任的,等等).这Model,是我的应用程序逻辑的核心所在.
这个观点是否正确?
为了尝试将其转化为更有意义的东西,我将尝试使用WinForms绘制一个简单的示例(请不要使用ASP.NET或WPF! - 对于java人群,从我的理解,Swing在类似的工作中通往WinForms的方法!),看看我是否正确,并且我会提出我在做这件事时总是会遇到的问题.
让我们假设我有一个只包含一个类的模型(只是为了让它变得更容易.我知道它会使示例看起来很笨,但这样更容易):
class MyNumbers {
private IList<int> listOfNumbers = new List<int> { 1, 3, 5, 7, 9 };
public IList<int> GetNumbers() {
return new ReadOnlyCollection<int>(listOfNumbers);
}
}
Run Code Online (Sandbox Code Playgroud)
现在是时候让我Controller:
class Controller
{
private MyNumbers myNumbers = new MyNumbers();
public IList<int> GetNumbers() {
return myNumbers.GetNumbers();
}
}
Run Code Online (Sandbox Code Playgroud)
本View应只是有一个ListBox有作为的项目中检索到的所有数字MyNumbers.
应该Controller负责创建MyNumbers吗?在这个简单的例子中,我认为它是可以接受的(无论如何MyNumbers都会完全相同,并且没有相关的状态).但是我们假设我想要用于所有不同的控制器,我的应用程序具有相同的实例MyNumbers …