Answers:
控制器和ViewModel在各种方面有所不同。
在MVC中,控制器知道视图,可以更改视图。它也知道模型并且可以调用它。在MVVM中,ViewModel是View的抽象表示,并且不知道具体的UI,它以某种方式包装Model,以便可以根据需要显示它。
在经典MVC中,控制器只是View与Model交互的策略。实际上,有时甚至没有必要使用Controller。在MVVM中,您不需要它,因为如果您需要不同的行为,则可以为同一个视图使用不同的ViewModel。在MVC中,您可能有一个ReadOnlyController或AdminController与模型进行通信。在MVVM中,您可能只有两个ViewModel,然后选择所需的View。
但是它们确实有一些相似之处。在这两种模式中,View都是观察者。在经典MVC中,视图是模型的观察者,在MVVM中,它是ViewModel的观察者。
两种模式都旨在提供关注点分离。MVVM的主要目的是提供View的抽象,完全独立于使用的UI技术。MVC并没有走那么远。它的主要重点是关注点的分离,因此您不必将业务逻辑(模型)放入视图中。
你也可以找到这个答案我的到类似的问题很有帮助。
最后,我应该说两种模式都属于同一个家庭。MVVM是其后代的MVP是MVC的同级产品。如果您想了解更多信息,请单击此链接到Martin Fowler的网站,他详细解释了所有内容。