Basics of Abstraction
Single Purpose Principle
The Art of Uniform Interface
Dependency Direction
Concrete Class vs Abstract Messages
Flexible Design
Localized Change vs Additive Change
Open Closed Principle
The Three Basic Rules for a Good Design