The Observer design pattern solves problems like:
How can a one-to-many dependency between objects be defined
without making the objects tightly coupled?
How can an object notify an open-ended number of other objects?
See Applicability section for all problems Observer can solve. See Solution section for how Observer solves the problems.