一、单一职责原则:一个类只需做好一件事情不需要太复杂,太复杂可以分成多个类
二、开放封闭原则:对扩展开放,对修改封闭
三、依赖倒置原则:两个类之间的依赖关系不能是强依赖关系,一个类相对于另一个类都是可替换的(如A依赖B ,现有C类和B功能差不多,可以将B替换为C)(使用依赖注入的方式将B注入A,B可替换为其他类)
高层模块不应该依赖与底层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象
四、里氏替换原则通俗的来讲就是:用父类的地方就可以用子类,子类可以扩展父类的功能,但不能改变父类原有的功能。
错误例如:父亲func1()是+法运算,子类重写func1()为减法,将导致无法替换
它包含以下4层含义:
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 例如用接口的方式,断开继承。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
五、配置化原则:尽可能地使用配置,而不是硬编码(如数据参数和常量应该放置配置文件中)
六、面向接口编程,而不是面向实现编程(只需要关心有哪些接口,而不需要关心这些接口具体是怎样实现的)