行为型模式

通过类之间不同的通信方式实现不同行为。

1 访问者模式

2 模板模式

3 策略模式

属于对象的行为模式,针对一组算法,将每一个算法封装到具有共同接口的独立类中,使得他们可以相互替换。

image.png

4 状态模式

5 观察者模式

image.png

  • Subject:抽象被观察对象,仅提供注册和删除观察者对象的接口声明。
  • ConcreteSubject:具体被观察对象,该对象中收集了所有需要被通知的观察者,可以动态增删集合中的观察者,当状态发生变化时,会通知所有观察者对象。
  • Observer:抽象观察者,为所有观察者定义获得通知的同一接口。
  • ConcreteObserver:观察者对象,关注对象为Subject,能接受Subject变化是发出的通知并更新自身状态

优点:

  • 被观察者和观察者之间时抽象耦合的
  • 耦合度较低,两者之间关联仅在于消息通知
  • 被观察者者无需关心他的观察者
  • 支持广播通信

缺点:

  • 观察者只知道被观察对象发生了变化,不知道过程和原因
  • 观察者同时可能是被观察者,消息链路可能过长
  • 如果观察者和被观察者之间产生循环依赖,会导致无限循环

6 备忘录模式

7 中介者模式

8 迭代器模式

9 解释器模式

10 装饰器模式

对现有类对象进行包装,在不改变类对象和定义情况下,添加额外功能。

是一种对象结构型模式。

image.png

Component:对象的接口类,定义装饰对象和被装饰对象的共同接口

ConcreteComponent:被装饰对象的定义

Decorator:装饰对象的抽象类,持有一个具体被修饰的对象,并实现接口类继承的公共接口

ConcreteDecorator:具体的装饰器,负责王被装饰对象添加额外功能。

final修饰的类无法使用继承来拓展对象行为,此时可以使用装饰模式进行拓展。

11 命令模式

12 责任链模式

一个请求沿着一条链传递,直到该链上某个处理者处理它为止。

当程序需要使用不同方法处理不同种类请求时,而且请求类型和顺序预先未知时。使用责任链模式,收到请求后,按顺序询问每个处理者是否能够处理