Basics of the MVVM pattern
The MVVM pattern involves three different components. You should be familiar with two of them:
- Model: This is the same model as in MVC, and it represents knowledge and data.
- View: This is the same as in the MVC pattern; it provides an external representation that is understandable by the user, whether human or machine.
- ViewModel: This is the model for a view (duh!). It represents the whole state of the view, and exposes behaviors.
Note
What about UIViewControllers
and NSViewControllers
?
They belong to the View
layer (think back to the previous chapter). We will inject ViewModels
in either the views or the viewControllers.
Refactoring MVC into MVVM
We will reuse the previous example, the Question/Answer game, but this time, instead of writing it following a pure MVC pattern, we'll use the MVVM pattern.
As with the previous implementation (with the MVC pattern), we'll cover each layer, one after the other, in order to not miss anything.
Model
The model layer still contains...