概述

设计模式是前辈们对于代码开发经验的总结,是解决特定问题的一种固定套路。本质上还是对面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解。设计模式最终要做到的就是将变化的部分和不变的部分隔离开来

设计模式有两个核心理念:

  1. Program to an “interface”,not an “implementation”
  2. 使用者不需要知道数据类型,结构,算法的细节
  3. 使用者不需要知道实现细节,只需要知道提供的接口
  4. 利于抽象,封装,动态绑定,多态
  5. 符合面向对象的特质和理念
  6. “Favor ‘object composition’ over ‘class inheritance’”
    1. 继承需要给子类暴漏一些父类的设计和实现细节
    2. 父类实现的改变会造成子类也需要改变
    3. 我们以为继承主要是为了代码重用,但实际上在子类中需要重新实现很多父类的方法
    4. 继承更多的应该是为了多态

TIPS

  • 封装变化
  • 多用组合,少用继承
  • 针对接口编程,不针对实现编程
  • 将系统中变化的部分抽离出来封装

导航

接下来,我将具体的深入到每个设计模式当中去,去探究其使用场景

  1. 面向对象设计原则
  2. 开放闭合原则
  3. 里氏替换原则
  4. 依赖倒置原则
  5. 单一职责原则
  6. 接口隔离原则
  7. 迪米特法则
  8. 合成复用原则
  9. 设计模式详解
    1. 创建性模式
    2. 结构型模式
    3. 行为型模式
    4. 观察者模式

参考文档

Java设计模式:23种设计模式全面解析(超级详细)