设计模式之行为型模式

简介

本文章旨在记录学习设计模式的过程,学习内容主要来自菜鸟教程,网址:设计模式,学习代码整理在:代码仓

十二种行为模式

责任链模式(Chain of Responsibility Pattern)

  • 使用场景:有一个请求,将发送者与接收者解耦,用链的形式存储接受者,如果它不能处理的话,将该请求发送给下一个接收者
  • 主要思想:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上就可以了
  • 代码示例:在代码仓中包名design.pattern.chain

命令模式(Command Pattern)

  • 使用场景:认为是命令的地方都可以使用命令模式
  • 主要思想:请求以命令的形式包裹在对象中,并传递给调用对象,调用对象寻找可以处理该命令的合适的对象,并把该命令传递给相应的对象,该对象执行命令
  • 代码示例:在代码仓中包名design.pattern.command

解释器模式(Interpreter Pattern)

  • 使用场景:可以将一个需要解释执行的语言中的句子表示为一个抽象语法树
  • 主要思想:构建语法树,定义终结符与非终结符
  • 代码示例:在代码仓中包名design.pattern.command

迭代器模式(Iterator Pattern)

  • 使用场景:提供一种方法顺序访问聚合对象中各个元素,而又不暴露该对象的内部表示
  • 主要思想:把在元素间游走的责任交给迭代器,而不是聚合对象
  • 代码示例:在代码仓中包名design.pattern.iterator

中介者模式(Mediator Pattern)

  • 使用场景:对象与对象之间存在大量的关联关系,多个类相互耦合,形成网状结构
  • 主要思想:将对象相互间的通信封装到一个类里,将网状结构分离为星型结构
  • 代码示例:在代码仓中包名design.pattern.mediator

备忘录模式(Memento Pattern)

  • 使用场景:需要记录一个对象的内部状态,允许用户取消不确定或错误的操作,能够恢复到它原先的状态,使得他有后悔药可吃
  • 主要思想:通过一个备忘录类专门存储对象的状态
  • 代码示例:在代码仓中包名design.pattern.memento

观察者模式(Observer Pattern)

  • 使用场景:一个对象状态改变给其他对象通知
  • 主要思想:在抽象类里用一个List存放观察者们,广播时调用所有观察者的对应方法
  • 代码示例:在代码仓中包名design.pattern.observer
  • 个人理解:精髓在于所有观察者继承自同一超类,每一观察者须实现接收通知的方法,改变的对象调用所有观察者的这一方法

状态模式(State Pattern)

  • 使用场景:代码中的对象有大量的状态
  • 主要思想:将各种具体的状态类抽象出来
  • 代码示例:在代码仓中包名design.pattern.state
  • 个人理解:不同的状态抽象出各自的类,将原对象传入状态类中,状态类可以对对象进行处理

空对象模式(Null Object Pattern)

  • 使用场景:使用空对象时
  • 主要思想:用空对象取代NULL对象实例的检查
  • 代码示例:在代码仓中包名design.pattern.nullObject
  • 个人理解:对空对象专门封装一个类,其中对所有接口作实现,以防止NULL可能带来的问题

策略模式(Strategy Pattern)

  • 使用场景:一个系统需要动态地在几种算法中选择一种
  • 主要思想:将这些算法分别封装成一个个类
  • 代码示例:在代码仓中包名design.pattern.strategy

模板模式(Template Pattern)

  • 使用场景:整体框架相同,但具体实现不同
  • 主要思想:顶层定义好框架,详细实现延迟到子类实现
  • 代码示例:在代码仓中包名design.pattern.template

访问者模式(Visitor Pattern)

  • 使用场景:数据结构稳定,但操作易变
  • 主要思想:在被访问的类里增加一个接受访问者访问的接口,访问者中将每一个被访问者作为访问方法的参数,内部实现对被访问者的访问
  • 代码示例:在代码仓中包名design.pattern.visitor
  • 参考:菜鸟教程中我不太理解,参考另一篇解释:访问者模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值