#SOLID
- S SRP Single responsibility principle, an object should have only a single responsibility.
- O OCP Open/closed principle, “software entities … should be open for extension, but closed for modification”.
- L LSP Liskov substitution principle, “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”. See also design by contract.
- I ISP Interface segregation principle, “many client-specific interfaces are better than one general-purpose interface.”
- D DIP Dependency inversion principle, one should “Depend upon Abstractions. Do not depend upon concretions.” Dependency injection is one method of following this principle.
see http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)