行为型模式
通过类之间不同的通信方式实现不同行为。
1 访问者模式
2 模板模式
3 策略模式
属于对象的行为模式,针对一组算法,将每一个算法封装到具有共同接口的独立类中,使得他们可以相互替换。
4 状态模式
5 观察者模式
- Subject:抽象被观察对象,仅提供注册和删除观察者对象的接口声明。
- ConcreteSubject:具体被观察对象,该对象中收集了所有需要被通知的观察者,可以动态增删集合中的观察者,当状态发生变化时,会通知所有观察者对象。
- Observer:抽象观察者,为所有观察者定义获得通知的同一接口。
- ConcreteObserver:观察者对象,关注对象为Subject,能接受Subject变化是发出的通知并更新自身状态
优点:
- 被观察者和观察者之间时抽象耦合的
- 耦合度较低,两者之间关联仅在于消息通知
- 被观察者者无需关心他的观察者
- 支持广播通信
缺点:
- 观察者只知道被观察对象发生了变化,不知道过程和原因
- 观察者同时可能是被观察者,消息链路可能过长
- 如果观察者和被观察者之间产生循环依赖,会导致无限循环
6 备忘录模式
7 中介者模式
8 迭代器模式
9 解释器模式
10 装饰器模式
对现有类对象进行包装,在不改变类对象和定义情况下,添加额外功能。
是一种对象结构型模式。
Component:对象的接口类,定义装饰对象和被装饰对象的共同接口
ConcreteComponent:被装饰对象的定义
Decorator:装饰对象的抽象类,持有一个具体被修饰的对象,并实现接口类继承的公共接口
ConcreteDecorator:具体的装饰器,负责王被装饰对象添加额外功能。
final修饰的类无法使用继承来拓展对象行为,此时可以使用装饰模式进行拓展。
11 命令模式
12 责任链模式
一个请求沿着一条链传递,直到该链上某个处理者处理它为止。
当程序需要使用不同方法处理不同种类请求时,而且请求类型和顺序预先未知时。使用责任链模式,收到请求后,按顺序询问每个处理者是否能够处理