Observer Example
MVC Example
MVP Example