设计模式概述

最近学习《Android源码设计模式解析与实战》的一些笔记,记录下,加深下印象。做不到对各种设计模式脱口而出,但是至少看别人的代码的时候能够知道用了什么设计模式,结合Android系统中的源码应用,加深自己的理解,希望自己做到融会贯通,不靠死记硬背。

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。

面向对象设计原则

面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。

  • 单一职责原则:就是一个类只负责一个功能领域中的相应职责
  • 开闭原则:软件实体应对扩展开放,而对修改关闭
  • 里氏代换原则:所有引用基类对象的地方能够透明地使用其子类的对象
  • 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象
  • 接口隔离原则:使用多个专门的接口,而不使用单一的总接口
  • 合成复用原则:尽量使用对象组合,而不是继承来达到复用的目的
  • 迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用

分类

创建型设计模式(Creational patterns)

描述如何创建对象。

  • 工厂方法模式
  • 抽象工厂模式
  • 单例模式
  • 建造者模式
  • 原型模式

关于工厂模式,还有一个简单工厂模式(也叫静态工厂模式),并不属于23种设计模式,但是还是要知道的。

结构型设计模式(Structural patterns)

描述如何实现类或对象的组合。

  • 适配器模式
  • 装饰器模式
  • 代理模式
  • 外观模式
  • 桥接模式
  • 组合模式
  • 享元模式

行为型设计模式(Behavioral patterns)

描述类或对象怎样交互以及怎样分配职责。

  • 策略模式
  • 模板方法模式
  • 观察者模式
  • 迭代子模式
  • 责任链模式
  • 命令模式
  • 备忘录模式
  • 状态模式
  • 访问者模式
  • 中介者模式
  • 解释器模式

来一张网上找到的图:
设计模式概述

参考

学习过程还参考(ctrl+c/v)了以下优秀资料(真的写的非常好):

评论留言请点这里