Applying the Observer to the Case Study
My approach is to look in the problem for clues as to what is varying. Then, I attempt to encapsulate the variation. In the current case, I find:
Different kinds of objects— There is a list of objects that need to be notified of a change in state. These objects tend to belong to different classes.
Different interfaces— Since they belong to different classes, they tend to have different interfaces.
First, I must identify all of the objects that want to be notified. I will call these the observers since they are waiting for an event to occur.
I want all of the observers to have the same interface. If they do not have the same interface, then I would have to modify the subject—that is, the object that is triggering ...