0%

设计原则

SOLID 设计原则

开闭原则和里氏替换原则是设计目标;单一职责原则、接口分割原则和依赖倒置原则是设计方法。

  • Single Responsibility Principle(SRP): 单一职责原则

    SRP 要求每个软件模块职责要单一,衡量标准是模块是否只有一个被修改的原因。职责越单一,被修改的原因就越少,模块的内聚性 (Cohesion) 就越高,被复用的可能性就越大,也更容易被理解。

  • Open Close Principle(OCP): 开闭原则

    软件实体应该对扩展开放,对修改关闭。

    设计模式中例如:

    • 装饰者模式 可以在不改变被装饰对象的情况下,通过包装 (Wrap) 一个新类来扩展功能。
    • 策略模式 通过制定一个策略接口,让不同的策略实现成为可能。
    • 适配器模式 在不改变原有类的基础上,让其适配 (Adapt) 新的功能。
    • 观察者模式 可以灵活地添加或删除观察者 (Listener) 来扩展系统的功能。
  • Liskov Substitution Principle(LSP): 里氏替换原则

    程序中的父类型都应该可以正确地被子类型替换。

    根据 LSP 的定义,如果在程序中出现使用 instanceof、强制类型转换或者函数覆盖,很可能意味着是对 LSP 的破坏。

  • Interface Segregation Principle(ISP): 接口隔离原则

    接口隔离原则认为不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口要好。
    满足 ISP 之后,最大的好处是可以将外部依赖减到最少。你只需要依赖你需要的东西,这样可以降低模块之间的耦合(Couple)。

  • Dependency Inversion Principle(DIP): 依赖倒置原则

    依赖倒置,就是要反转依赖的方向,让原来紧耦合的依赖关系得以解耦,这样依赖方和被依赖方都有更高得灵活度。
    DIP 要求高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖细节,细节应该依赖抽象。

其他原则

  • DRY

    DRY(Don`t Repeat Yourself)原则特指在程序设计和计算中避免重复代码,因为这样会降低代码得灵活性和简洁性,并且可能导致代码之间的矛盾。

  • YAGNI

    YAGNI(You Ain`t Gonna Need It)是正对大设计提出来的,是”极限编程”提倡的原则,是指你自以为有用的功能,实际上都是用不到的。因此,除了核心的功能之外,其他的功能一概不要提前设计。

  • Rule of Three

    Rule of Three 也被称为”三次原则”, 是指当某个功能第三次出现时,就有必要进行”抽象化”了。

  • KISS

    KISS(Keep It Simple and Stupid)好的目标不是越复杂越好,反而时越简洁越好。

  • POLA

    POLA(Principle of least astonishment)是最小惊奇原则,写代码不是写侦探小说,要的是简单易懂,而不是时不时冒出个”Surprise”。