
The most well-known design pattern for decoupling object instances or classes from one another and still have a mechanism for the observer to know, when a particular event occurs on a subject, is the Observer-Pattern. The implementation is typically done either using abstract classes or using interfaces.
While the prior has the advantage that the abstract classes may provide a reusable behaviour for observer registration and notification it limits...
