The controller layer is used to restrict access to the model layer. It is usually used between the view and the model layer to validate changes. It can also be used behind a remote API to ensure that changes are validated consistently. Controllers used the validation model to enforce validation rules.
To be useful, a controller layer has to be linked to a controlled model. The control layer will then create a controller structure that matches the structure of the model. Every property collection in the model will have a corresponding property collection controller. Each property collection controller will contain a property controller that matches each of the values in the controlled collection.
Property Collection Controllers are used to control a single property collection at a time. They are control access to the delete and add operations on a collection. They also contain a list of property controllers that match each of the properties in the controlled collection.