S: 单一责任原则(Single Responsibility Principle,SRP)
一个类有且仅有一个职责
O:开放封闭原则(Open Closed Principle,OCP)
对扩展开放,对修改闭合
L:里式替换原则(Liskov Substitution Principle,LSP)
任何基类可以出现的地方,子类一定可以出现
I:接口分离原则(Interface Segregation Principle,ISP)
一个接口或者类应该拥有尽可能少的行为
D:依赖导致原则(Dependency Inversion Principle,DIP)
高层模块不应该依赖底层模块,两者都应该依赖其抽象。即面向接口编程,不要面向实现编程