Behavioral Patterns 行为模式总结

一、总体概念

 Behavioral Patterns
  Chain of Resp.   A way of passing a request between a chain of objects
  Command   Encapsulate a command request as an object
  Interpreter   A way to include language elements in a program
  Iterator   Sequentially access the elements of a collection
  Mediator   Defines simplified communication between classes
  Memento   Capture and restore an object's internal state
  Observer   A way of notifying change to a number of classes
  State   Alter an object's behavior when its state changes
  Strategy   Encapsulates an algorithm inside a class
  Template Method   Defer the exact steps of an algorithm to a subclass
  Visitor   Defines a new operation to a class without change

二、分类

根据其特性分成了三类:

1、将sender和receiver解藕的4种模式:

command模式:将调用某个命令的对象和执行命令的对象decouple,调用命令的对象完全不知道执行命令的对象以及执行的具体方式,只知道执行的接口(通过command的抽象  类的接口)。可以在运行时,改变调用的命令,只需要使用不同的命令对象
observer模式:又叫做publish-subscribe。在这个模式中,有多个observer(subscriber订阅者)订阅了某一个对象。也就是说,当这个对象发生改变时,要通知到所有  observer,维护observer数据的一致性。这个模式的好处时,可以随时增加或者删除observer(订阅者)。
mediator模式:所有对象之间的交互都要通过mediator来进行,各个对象之间不需要知道对方,只需要知道mediator。
chain of responsibility: 将命令的sender和receiver进行decouple,使得request沿着sender一直传到receiver

2、封装:

找出变化并封装之。找出一些对象的不同之处,把这些不同之处作为抽象类的虚函数,也就是接口。如抽象类为A,实际类为A1和A2

优先使用对象聚集,而不是类继承。使用聚集来使用这些对象。如果B要使用A,则把A的一个指针作为其类成员,然后调用A的接口。这样,B在实现中不需要知道A调用的虚函数的方法到底是哪个,这是由运行时A的实际对象类型来决定的。

strategy模式:把各种不同的算法作为A
state模式:把各种不同的状态作为A

3、其他:

visitor:一个结构(一般是composite结构)中,每个子类都有针对这种子类的一系列操作,而这些操作经常发生变化,则需要整个类层次中的操作(函数)都发生改变。在这种 情况下,要使用visitor模式,使每一种操作都作为一个单独的类

template method:一种算法的步骤固定,但其中一些步骤实现决定于具体的子类。
memento:需要保存一个对象的状态,但又不希望暴露其接口,用memento对象来存储其状态,并在适当时候恢复其状态
iterator:遍历一个结构(composite结构)
interpreter:解析一种语言结构

你可能感兴趣的:(Algorithm,算法,object,command,iterator,behavior)