dev*_*ium 43 .net c# java model-view-controller winforms
我在理解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.我将不得不传递给我Controller(以及所有其他需要它的)MyNumbers我要使用的那个实例.谁将对此负责?在这个WinForms示例中,那会是View什么?或者那会是创造这个的阶级View?
转过来问题:这3个部分的实例化顺序是什么?MVC调用它的"所有者" 创建它的代码是什么?应该Controller创建View和Model?如果该View实例化Controller和Controller的Model?
main假设我只希望我的应用程序具有Use Case这个Controller描述,该方法应该是什么样子?
为什么在下面的MVC图中,View有箭头指向Model?不应该Controller总是在两者之间的桥梁View和Model?
![]()
我还有一两个问题,但在我理解了第一个细节后,他们可能会更有意义.或者也许在我明白第一个问题之后,其他所有人都会分崩离析.
谢谢!
xj9*_*xj9 26
获得MVC处理的最简单方法是在一个强制执行它的框架中使用它,据说..
这个图非常有用(它比Wikipedia更有意义): MVC Diagram http://java.sun.com/developer/technicalArticles/javase/mvc/images/Figure4.gif
来源,关于MVC的精彩文章!