The Observer is often used to ensure a loose coupling between an application and its user interface
In general, Observer can be used whenever a set of observer objects need to be informed about state changes in a subject object