Summary
In this chapter, we covered the Observer design pattern. We use Observer when we want to be able to inform/notify all stakeholders (an object or a group of objects) when the state of an object changes. An important feature of observer is that the number of subscribers/observers as well as who the subscribers are may vary and can be changed at runtime.
To understand Observer, you can think of an auction, with the bidders being the subscribers and the auctioneer being the publisher. This pattern is used quite a lot in the software world.
In general, all systems that make use of the MVC pattern are event-based. As specific examples, we mentioned:
django-observer, a third-party Django library used to register observers that are executed when fields are modified.
The Python bindings of RabbitMQ. We referred to a specific example of RabbitMQ used to implement the publish-subscribe (aka Observer) pattern.
In the implementation example, we saw how to use Observer to create data formatters that...