Chapter 1 Welcome to Design Patterns: an introduction OO Basics: Abstraction Encapsulation Polymorphism Inheritance OO Principles: Encapsulate what varies. Favor composition over inheritence. Program to interfaces, not implementations. OO Patterns: Strategy - defined a family of algorithms, encapsulates each once, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Chapter 2 Keeping your Objects in the know: the Observer Pattern OO Principles: Strive for loosely coupled designs between objects that interact. OO Patterns: Observer - defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. Chapter 3 Decorating Objects: the Decorator Pattern OO Principles: Classes should be open for extension but closed for modification. OO Patterns: Decorator - Attach additional responsibilities to an objec...