...
- DRY (Don't Repeat Yourself)
http://en.wikipedia.org/wiki/Don%27t_repeat_yourself - Separation of Concerns
http://en.wikipedia.org/wiki/Separation_of_concerns - Encapsulation
http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming) - Dependency Abstraction through Interfaces
Dependencies between classes should be through interfaces not classes. - SOLID
http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)- Single Responsibility
http://en.wikipedia.org/wiki/Single_responsibility_principle - Open/Closed
http://en.wikipedia.org/wiki/Open/closed_principle - Liskov Substitution
http://en.wikipedia.org/wiki/Liskov_substitution_principle - Interface Segregation
http://en.wikipedia.org/wiki/Interface_segregation_principle - Dependency Inversion - a superset of (Service Locator, Factory, Dependency Injection)
http://en.wikipedia.org/wiki/Dependency_inversion_principle
- Single Responsibility