软考上午05设计模式-行为型

发布时间 2023-10-27 18:33:22作者: 天启A

责任链模式:

  意图:使多个对象都有机会处理请求,避免请求的发送者和接受者有耦合关系。将这些对象连成一条链

  适用:多个的对象可以处理一个请求,具体哪个处理在运行时确定

      在不明确指明接收者的情况下向多个对象中的一个提交请求

      可处理一个请求的对象集合应被动态指定

命令模式:

  意图:将请求封装为一个对象使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,支持可撤销的操作

  适用:抽象出待执行的动作以参数化某对象

      在不同的时刻指定、排列和执行请求

      支持取消操作

      支持修改日志

解释器模式:

  意图:使用该表示来解释语言中的句子

  适用:(1)该文法简单。(2)效率不是一个关键问题。

      当有一个语言需要解释执行,并且可以将该语言中的句子表示为一个抽象语法树时

迭代器模式:

  意图:提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴漏该对象的内部表示

  适用:

中介者模式:

  意图:用一个中介对象来封装一系列的对象交互,使各对象不需要显式的引用,使耦合松散,独立地改变他们之间的交互

  适用:一组对象以定义良好但是复杂的方式通信,产生的相互依赖关系结构混乱难以理解

      一个对象引用其他很多对象直接通信,导致难以复用

      定制一个分布在多个类中的行为,又不想产生太多子类

备忘录模式:

   意图:在不破坏封装性的前提下捕获一个对象的内部状态,在对象之外保存这个状态。这样之后就可以恢复到这个状态

   适用:必须保存一个对象在某一时刻的状态,这样以后需要的时候就可以恢复到先前状态,

观察者模式:

   意图:定义对象之间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖与它的对象都会得到通知并被自动通知

状态模式:

  意图:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎改变了它的类

  适用:一个对象的行为决定于它的状态,并且它必须时刻运行根据状态改变它的行为

      一个操作中含有庞大的分支语句。且这些分支依赖于该对象的状态,这个状态常用一个或多个枚举常量表示