Design Patterns
Observer pattern
Singleton Class Example