六大原则
基本原则
抽象与封装原则
- 分离稳定与变化
- 封装变化
- 抽象变化接口
针对接口编程
组合优先原则
开闭原则
开闭原则是跟面向对象设计的根本原则。
含义:对拓展开放,对修改封闭。(在修改类时,应是增加新的代码实现而非去修改原有代码)
单一职责原则
含义:就一个类而言,应该仅有一个引起它变化的原因(职责单一)。
好处:单一职责可有效降低类间的耦合度,提高内聚度
里氏替换原则
含义:子类型必须能够替换掉相应的夫类型,即所有引用父类的地方必须能透明地使用其子类的对象。
只有当子类可以替换掉父类、软件单位的功能不受影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。
好处:正是由于里氏替换原则,才使得开放-封闭成为可能(由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以拓展。)。
依赖倒转原则
含义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象(即底层的实现类应该依赖于抽象类和接口)。
核心思想:核心思想就是面向接口编程,使用抽象的目的是制定规范,不涉及任何具体的操作,把展示细节的任务交给实现去完成。
好处:可以减少类间的耦合性,提高系统的稳定性,减少并行开发引起的风险,提高代码的可读性和可维护性。
接口隔离原则
含义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
好处:接口是设计时对外部设定的约定,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
迪米特法则
含义:一个软件实体应当尽可能少的与其他实体发生相互作用。
好处:可以降低系统的耦合度,使类与类之间保持松耦合状态。