依赖倒转原则
原话:抽象不应该依赖细节,细节应该依赖于抽象。
说白:针对接口编程,不要对实现编程。
就像是列了个提纲,照着提纲有条不紊地写作文,而不是想到哪里写哪里。也比如电脑和收音机,一个换零件,一个换新。
这是面向对象的标志,如果只为自己写代码爽了,不思考后期扩展修改的困难,那就属于过程化的设计。
里氏代换原则
子类型必须能够替换掉他们的父类型。
举例:在面向对象时,鸟会飞,企鹅虽然属于鸟类,但是企鹅不会飞,并未拥有父类所有的行为和属性,所以不能继承父类。
单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,会遭受到意想不到的破坏。
开放——封闭原则
软件实体(类,函数,模块)可以扩展,但是不可以修改。
如果出现新的需求,应该在原有代码不动的情况下去增加新代码,而不是去更改现有的代码。这就要求我们需要构建良好的设计模式。