display visual elements and controls on the screen
they’re typically subclasses of UIView
It displays a representation of the model and receives the user’s interaction with the view (clicks, keyboard, gestures, etc.), and it forwards the handling of these to the ViewModel via the data binding (properties, event callbacks, etc.) that is defined to link the view and ViewModel
ViewModels
Binders
transform model information into values that can be displayed on a view
they’re usually classes, so they can be passed around as references
is a value converter, meaning the view model is responsible for exposing (converting) the data objects from the model in such a way that objects are easily managed and presented
is an abstraction of the view exposing public properties and commands. Instead of the controller of the MVC pattern, or the presenter of the MVP pattern, MVVM has a binder, which automates communication between the view and its bound properties in the view model. The view model has been described as a state of the data in the model. The main difference between the view model and the Presenter in the MVP pattern, is that the presenter has a reference to a view whereas the view model does not. Instead, a view directly binds to properties on the view model to send and receive updates. To function efficiently, this requires a binding technology or generating boilerplate code to do the binding
Use this pattern when you need to transform Models into another representation for a View. For example, you can use a ViewModel to transform a Date into a date-formatted String, a Decimal into a currency-formatted String, or many other useful transformations