SRP( Principle of single responsibility ,Single Responsibility Principle): There should be and only one reason for class changes .( If the class needs to be changed , Then it can only be caused by one reason )


LSP( Richter's principle of substitution ,Liskov Substitution Principle): All references to base classes , Can be transparently replaced with its subclass objects . As long as the parent can appear , Subclasses can appear .


OCP( Opening and closing principle ,Open-Closed Principle): Open to expansion , Turn off for changes


ISP( Interface isolation principle ,Interface Segregation Principle): The client only depends on the interface it needs ; It provides whatever interface it needs , Remove unnecessary interfaces . Dependencies between classes should be based on minimal interfaces


DIP( Dependence Inversion Principle ,Dependence Inversion Priniciple): For abstraction ( Interface ) Programming , Not specific ( Realization ) Programming


LoD(Law Of Demeter  Dimitar's law , Also known as the principle of minimum knowledge (Least Knowledge Priniple)): Minimize interaction between objects