- Program to an interface, not an implementation
- Enacapsulate what differs
- Favor composition over inheritance.
- Strategy Design pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.