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.