The Model-View-Controller Architecture

We refine the multi-layer pattern with the Model-View-Controller pattern:

If our domain layer consists of many classes, we might want to introduce the Facade pattern to promote decoupling between the presentation package and the domain package.

View Notification

How can the model notify all views when it has been updated without introducing a dependency on them? To solve this problem we can refine the Model-View-Controller pattern with the Publisher-Subscriber pattern: