-program to an interface and not to implementation -encapsulate variation; open to extension, close to modification -favor object composition over inheritance -delegate responsibilities
-program to an interface and not to implementation -encapsulate variation; open to extension, close to modification -favor object composition over inheritance -delegate responsibilities
1. program to an interface, not an implementation  2. identify the aspects of the application that vary