I’ve got a frustrated anonymous poster who complains that my definition of ViewModel in Model/View/ViewModel is exactly that of Controller in MVC, and references Cocoa.
It appears to me that Cocoa has changed the definition of Controller from the original 1979 Smalltalk term. In that framework, the Controller was responsible for mapping Input to the Model and the View.
But according to the Cocoa definition I found on Apple’s site: http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaDesignPatterns/Articles/MVC.html
“A controller object acts as the intermediary between the application’s view objects and its model objects.”
It appears Cocoa also recommends dividing the Controller into a model-controller and a view-controller, and if I read between the lines correctly, the view-controller is where view state would go. I like this pattern rather a lot, but it is different from the MVC I have been contrasting with.
As an aside, I found a third way of looking at MVC in a old Java article: http://www.javaworld.com/javaworld/jw-10-1996/jw-10-howto.html . Notice how the diagram shows Model in the middle, with View and Controller only talking through the Model.