学习之前先罗列一下学习框架地图. 方便今后的学习.

三种编程范式

  1. 面向过程

  2. 面向对象(最主流)

  3. 函数式编程(如go语言)

面向对象7大知识点

  1. 面向对象的四大特性: 封装, 抽象, 继承, 多态
  2. 面向对象编程与面向过程编程的区别和联系
  3. 面向对象分析, 面向对象设计, 面向对象编程
  4. 接口与抽象的区别以及各自的应用场景
  5. 基于接口而非实现编程的设计思想
  6. 多用组合少用继承的设计思想
  7. 面向过程的贫血模型和面向对象的充血模型.

设计原则

  1. SRP 单一职责原则
  2. OCP 开闭原则
  3. LSP 里式替换原则
  4. ISP 接口隔离原则
  5. DIP 依赖倒置原则
  6. 其它原则
    1. DRY 原则
      1. Don’t repeat yourself 不要重复自己
      2. 出现两次或多次的重复代码就需要提取出来
    2. KISS 原则
      1. Keep It Simple, Stupid 保持简单, 愚蠢
      2. KISS原则使代码简单、清晰、易于理解
      3. 编程语言是为人类所理解的
      4. 保证你的方法尽量很小;
      5. 每个方法都不应该超过40-50行代码
      6. 每个方法应该只解决一个小问题,而不是实现很复杂的功能
    3. YAGNI 原则
      1. You aren’t gonna need it 你不会需要它
      2. 这是“极限编程”提倡的原则,指的是你自以为有用的功能,实际上都是用不到的。
    4. LOD 原则
      1. 迪米特法则(Law of Demeter)又叫作最少知识原则
      2. 不和陌生人说话
      3. 迪米特法则的初衷在于降低类之间的耦合
      4. 门面模式(Facade)和中介模式(Mediator),都是迪米特法则应用的例子

设计模式

经典设计模式有23种.

大部份的设计模式要解决的都是代码的可扩展性问题.

可分为三大类

  1. 创建型

    1. 常用:
      1. 单例模式
      2. 工厂模式(工厂方法和抽象工厂)
      3. 建造者模式
    2. 不常用:
      1. 原型模式
  2. 结构型

    1. 常用:
      1. 代理模式
      2. 桥接模式
      3. 装饰者模式
      4. 适配器模式
    2. 不常用:
      1. 门面模式
      2. 组合模式
      3. 享元模式
  3. 行为型

    1. 常用:
      1. 观察者模式
      2. 模板模式
      3. 策略模式
      4. 职责链模式
      5. 迭代器模式
      6. 状态模式
    2. 不常用:
      1. 访问者模式
      2. 备忘录模式
      3. 命令模式
      4. 解释器模式
      5. 中介模式

编程规范

编程规范主要解决是代码可读性问题.

推荐书籍: «重构», «代码大全», «代码整洁之道»

  1. 变量命名
  2. 类命名
  3. 函数命名
  4. 代码注释
  5. 函数不宜过长
  6. 参数不能过多.

Tip: 代码的味道分为坏味道与好味道.

代码重构

重构是软件开发中非常重要的一个环节, 持续重构是保持代码质量不下降的有效手段, 能有效避免代码腐化到无可求药的地步.

重构分: 大重构和小重构.

重构的工具

  1. 面向对象设计思想
  2. 设计原则
  3. 设计模式
  4. 编码规范

3W1H

  1. 重构的目的(why)
  2. 重构的对象(what)
  3. 重构的时机(when)
  4. 重构的方法(how)

Tip: 开发之初, 除非特别必须, 我们一定不要过度设计,应用复杂的设计模式.而是在代码出现问题的时候, 我们再针对问题, 应用原则和模式进行重构, 这样就能有效避免前期的过度设计.

本教程来自学习王争 «设计模式之美» 笔记