The design principles are associated to Robert Martin who gathered them in "Agile Software Development: Principles, Patterns, and Practices".
Single Responsibility Principle - srp
A class should have only one reason to change.
Open Close Principle - ocp
Software entities like classes, modules and functions should be open for extension but closed for modifications.
Liskov's Substitution Principle - lsp
Derived types must be completely substitutable for their base types.
Interface Segregation Principle - isp
Clients should not be forced to depend upon interfaces that they don't use.
Dependency Inversion Principle - dip
* High-level modules should not depend on low-level modules. Both should depend on abstractions.
* Abstractions should not depend on details. Details should depend on abstractions.
Reference:
- http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
- Agile Software Development: Principles, Patterns and Practices. Pearson Education. 2002.
- http://vimeo.com/64086087
- @Author: Victor Bolinches Marin