设计模式七大原则以及23种经典设计模式的分类

七大原则

  • 单一职责:导致一个类改变的原因只有一个,即它的职责只有一个
  • 依赖倒置:高层模块(稳定)不应该依赖底层模块(变化),它们都应该依赖接口(抽象);针对抽象编程,不要针对细节编程,即抽象不应该依赖实现细节,实现细节应该依赖抽象
  • 里氏替换:任何出现基类的地方都可以由子类替换,否则它们就不应该是继承关系
  • 接口隔离:将稳定不变的部分和变化的部分隔离开,使得可以保持稳定不变不受影响的情况下另一边随意变化适应需求;接口要小而完备
  • 迪米特法则:高内聚,低耦合,一个类对其它类引用和知道的越少越好
  • 开闭原则:对扩展开放,对修改封闭,即应对变化只能通过扩展来实现,不能通过修改
  • 合成复用:组合方式优先于继承方式

分类

创建型(5)

  • 单例模式:只生产一个对象
    设计模式七大原则以及23种经典设计模式的分类_第1张图片
  • 工厂模式:生产单一对象
    设计模式七大原则以及23种经典设计模式的分类_第2张图片
  • 抽象工厂模式:生产相互依赖的对象(生产一组对象,对象彼此依赖)
    设计模式七大原则以及23种经典设计模式的分类_第3张图片
  • 原型模式:复制的方式生产对象
    设计模式七大原则以及23种经典设计模式的分类_第4张图片
  • 建造者模式:生产一个拼起来的对象,生产流程稳定但是生产每个部件的材料可能不同,类似于模板模式。(一个生产模板,一个是业务模板)
    设计模式七大原则以及23种经典设计模式的分类_第5张图片

结构型(7)

  • 适配器模式:使得新旧可以兼容,复用旧的版本但新环境接口不一致的情况
    设计模式七大原则以及23种经典设计模式的分类_第6张图片
  • 桥接器模式:将平台和业务相分离,桥接在一起组合。同一事物不同分类
    设计模式七大原则以及23种经典设计模式的分类_第7张图片
  • 装饰着模式:为子类动态扩展,且扩展可复用。每一个子类扩展地组合形式可能是不一样地且可能是动态地。最主要的特点,子类分为两大类=主体子类+扩展子类,扩展子类中组合了父类
    设计模式七大原则以及23种经典设计模式的分类_第8张图片
  • 组合模式:树形结构表示对象关系,将一对多关系表示一对一,一视同仁的处理所有对象
    设计模式七大原则以及23种经典设计模式的分类_第9张图片
  • 外观模式:使得子系统与外部解耦,提供一个高层结构(稳定的使用接口)提高子系统的复用性
    设计模式七大原则以及23种经典设计模式的分类_第10张图片
  • 享元模式:共享对象,有就直接返回,没有就创建返回并放入池中
    设计模式七大原则以及23种经典设计模式的分类_第11张图片
  • 代理模式:增加间接层,扩展业务
    设计模式七大原则以及23种经典设计模式的分类_第12张图片

行为型(11)

  • 访问者模式:子类稳定但是子类的操作不稳定
    设计模式七大原则以及23种经典设计模式的分类_第13张图片
  • 观察者模式:消息通知,类似于订阅-通知的行为,订阅行为由观察者自己决定,主体不在乎谁订阅我,只负责通知订阅者。自动地给依赖我的人传递消息。
    设计模式七大原则以及23种经典设计模式的分类_第14张图片
  • 中介者模式:封装多个对象的复杂关系,解耦系统内复杂关系
    设计模式七大原则以及23种经典设计模式的分类_第15张图片
  • 解释器模式:业务(处理的事情千变万化)不断变化但是结构(规则一定)不断重复
  • 迭代器模式:透明地访问集合对象
    设计模式七大原则以及23种经典设计模式的分类_第16张图片
  • 模板模式:整体流程是固定的,但是具体的步骤实现可能会变化
    设计模式七大原则以及23种经典设计模式的分类_第17张图片
  • 策略模式:策略有很多种,但是只能选择一个策略,sp.出现switch和一连串的if-else时
    设计模式七大原则以及23种经典设计模式的分类_第18张图片
  • 职责链模式:一个请求可能被多个对象处理,但实际只是其中一个来处理
    设计模式七大原则以及23种经典设计模式的分类_第19张图片
  • 状态模式:状态变化导致行为变化
    设计模式七大原则以及23种经典设计模式的分类_第20张图片
  • 命令模式:将请求变成对象
    设计模式七大原则以及23种经典设计模式的分类_第21张图片
  • 备忘录模式:恢复对象之前的状态
    设计模式七大原则以及23种经典设计模式的分类_第22张图片

(红色表示稳定的部分,蓝色表示变化的部分)

你可能感兴趣的:(设计模式)