Nevertheless, sometimes it is necessary a Model notifies the GUI logic (generally the Controllers set, but also other models) that the state changed. This practical requirement has been allowed by extending the Model state with a mechanism called Observable Properties. An observable property is a part of the Model state which is also externally observable via an Observer. Every time an observable property changes, any interested Observer will be notified of the event.
Figure 3 shows a Model containing an observable property (color). When color changes to red, all connected Observers will be notified. Each Observer will then perform the necessary operation in order to make the View showing the occurred change.
Each Observer declares it is interested in receiving notifications on one or more properties changing, by a mechanism called Registration. Once an Observer (for example, a Controller) registered itself among the Model it is associated with, it will be notified of all changes of the observable properties. The Observers will be notified only of the property changes that they are actually interested in observing.
An implicit syntactical rule binds observable properties names to notifications sockets inside Observers. This rule allows an automatic connection, and fixes a sort of ''rule`` for methods names.
Later in this document, some implementation details are discussed, and further details about observable properties are presented. Finally, an example in the latest part should make all these concepts clearer.