PromleeBlog

posting thumbnail
轻松理解并应用SOLID原则

📅

模式知识的层次结构 (Hierarchy of Pattern Knowledge) 🔗

  1. 设计模式 (Design Patterns)
    • 策略模式 (Strategy Pattern)
      定义一组算法,将各个算法封装起来,使它们可以相互替换。
      使用策略的客户端可以在使用过程中更换策略。
  2. 面向对象原则 (Object-Oriented Principles)
    • 封装变化的部分。
    • 优先使用组合,而不是继承。
    • 面向接口编程,而不是面向实现编程。
  3. 面向对象基础 (Object-Oriented Basics)
    • 类与对象
    • 继承
    • 多态
    • 封装
    • 抽象

设计异味 (Design Smells) 🔗

不良设计的各种迹象和症状。
名称症状
僵化性 (Rigidity)系统难以修改,每改动一处都需要进行无休止的连锁修改。
脆弱性 (Fragility)修改系统的一部分,会破坏多个其他不相关的部分。
难以复用 (Immobility)很难将系统拆分为可供其他系统复用的组件。
黏滞性 (Viscosity)如果添加临时应对代码比添加符合设计的代码更容易,就说明黏滞性很高。
不必要的复杂性 (Needless Complexity)存在许多当前不需要、只是认为将来可能有用的复杂代码结构。
不必要的重复 (Needless Repetition)代码看起来像由两名程序员通过复制粘贴编写而成。
晦涩性 (Opacity)表达方式过于复杂,使理解原作者的意图变得困难。

依赖管理 (Dependency Management) 🔗

设计异味来自
未受管理的依赖关系
。
未受管理的依赖关系
面向对象语言提供了多种管理依赖关系的机制。

面向对象设计原则 (Object-Oriented Design Principles) 🔗

  1. Robert C. Martin提出的SOLID原则
  2. Craig Larman提出的GRASP原则
  3. 面向接口而非实现编程 (Interface-Oriented Programming)
  4. 优先使用对象组合,而不是类继承
  5. 封装变化的部分

SOLID原则 🔗

  1. 单一职责原则 (
    S
    ingle Responsibility Principle) —
    SRP
  2. 开闭原则 (
    O
    pen-Closed Principle) —
    OCP
  3. 里氏替换原则 (
    L
    iskov Substitution Principle) —
    LSP
  4. 接口隔离原则 (
    I
    nterface Segregation Principle) —
    ISP
  5. 依赖倒置原则 (
    D
    ependency Inversion Principle) —
    DIP
    轻松理解并应用SOLID原则 | PromleeBlog