学习网址:https://wiki.jikexueyuan.com
单一原则:
- 定义:一个类或者一个方法只负责一项职责;
- 问题:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。
- 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。
里氏替换原则:
子类扩展父类功能,但不能改变父类原有功能。这样会降低代码出错的概率;
含义:
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
依赖倒置原则:
模块之间使用接口来依赖,也就是变量或参数尽量使用抽象类或接口;
接口隔离:
复杂的接口,根据业务拆分成多个简单的接口,不需要的接口不给出来;
迪米特原则:
一个对象应该对其他对象有最少的了解,尽量降低类与类之间的耦合;
开闭原则:
- 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
- 问题:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。
- 解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。