Skip to content

Latest commit

 

History

History
42 lines (38 loc) · 2.02 KB

File metadata and controls

42 lines (38 loc) · 2.02 KB

WHY OOP : 抵御变化

WHAT IS OOP

  • 隔离变化, 适应软件的变化, 使得变化带来的影响最小。
  • 各司其职, 新增的变化不应该影响原来类型的实现。
  • 对象是什么:
    • 语言: 封装代码和数据
    • 规格: 一系列可被用的公共接口
    • 概念: 有责任的抽象

PRINCIPLES OF OOP

SOLID 五原则

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

    • 高层模块(稳定)不应该依赖于底层模块(变化), 二者都应该依赖于抽象(稳定)
    • 抽象不应该依赖于细节, 细节应该依赖于抽象。
  • 开放封闭原则(Open Closed Principle):

    • 对扩展开放, 对修改封闭
    • 类模块可扩展, 但是不可修改
  • 单一职责原则(Single Responsiblity Principle):

    • 一个类仅有一个引起它变化的原因
    • 变化的方向隐含着类的责任
  • Liskov替换原则

    • 子类必须可以替换基类, Effective C++ 中 public继承是 is-a 的关系
  • 接口隔离原则(Interface Segeration Principle)

    • 接口应该小而完备
    • 不应该让客户依赖于它们不用的方法
  • 优先使用对象组合而不是类继承

    • 继承破坏了封装性, 子类父类的耦合度高
    • 类继承称为白箱复用, 组合称为黑箱复用
    • 而对象组合只是要求对象有良好定义的接口, 耦合度低
  • 封装变化点

    • 实现封装来创建对象的分界层, 可以让设计者在一侧修改而不影响另一侧, 从而实现实现层的松耦合
  • 针对接口编程, 而不是针对实现编程

    • 不将变量类型声明为具体类, 而是声明为接口
    • 客户程序无需知道对象的具体类型, 而应该知道对象的所具有的接口
    • 减少系统中的各部分的依赖关系

设计原则到设计经验

  • Design Idioms: 与特定语言相关的惯用法和技巧
  • Design Patterns: 描述类和对象之间的组织关系
  • Architectural Patterns:子系统的划分以及它们之间的关系, 描述与基本结构组织关系密切的高层模式