# 设计模式

每一个模式描述了一个在我们周围不断重复发送的问题,以及该问题的解决方法的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。 ——来自 Christopher Alexander

深入理解面向对象:

  • 向下,深入理解三大面向对象机制
    • 封装,隐藏内部实现
    • 继承,复用现有代码
    • 多态,改写对象行为
  • 向上,深刻把握面向对象机制所带来的的抽象意义,理解如何使用这些机制来表达现实世界,掌握什么是“好的面向对象设计”

如何解决复杂性:

  • 分解:分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。
  • 抽象:由于不能掌握全部的复杂对象,我们选择忽略它的非本质细节,而去处理泛化和理想化了的对象模型。

软件设计的目标:

什么是好的软件设计?软件设计的金科玉律:复用!