1. Single Responsibility principle (S). Every class should be designed to complete one sigle resposiblity. Otherwise, it should be seperated into several ones, each of which fulfill one of them.
2. Open/Close Principle (O).
3. Liskov Substitution Principle (L).
4. Interface Segregation Principle (I).
5. Dependency Inversion Principle (D).
6. Demeter Principle (D).
7. Composite Reuse Prinple (C).