More Specific Design Principles of The Design Pattern

1. The Single Responsibility Principle (SRP)
 
A class should have only one cause to change.
 
2. Open Closed Principle (OCP) composition among
 
Class module should be extensible, as immutable (open for extension, to change the closed).
 
3. The Liskov Substitution Principle (LSP)
 
Subclasses must be substitutable for their base classes.
 
4. The Principle of Dependency Inversion (DIP)
 
High level modules should not depend on the underlying modules, both should depend upon abstractions. Abstractions should not depend upon the implementation details, but details should depend upon the abstractions.
 
5. Interface Segregation Principle (ISP)
 
Should not force the client, it depends upon the way that they do not use.