1. Single duty principle (SRP)
Each object or class has only one responsibility. High cohesion, bottom coupling.
2. Opening and closing principle (OCP)
Open for extensions, close for modifications. Usability, flexibility, extensibility, stability continuity, repetition, maintenance.
3. The Richter Replacement principle (LSP)
In the inheritance system, the use of abstract and polymorphic static change to dynamic, that is, any parent class can be replaced with his child class, without affecting the function.
4. Interface isolation principle (DIP)
Split functions to achieve different functions.
5. Dimitri Principle (ISP)
An object is as close to other objects as possible. Is that each class tries to avoid direct communication and reduces coupling.
6. Dependency inversion principle (LOP)
High-level modules rely on the underlying module, (the high-level modules, the underlying modules are set to a dependency interface) to improve the stability of the program, maintainability, scalability.
7. Combination/Aggregation principle (CARP)
Is that the system has better flexibility, first using the combination, and then using inheritance.
JAVA7 Large Design Principles