责任链模式(chain of responsbility)
职能:将能处理同一类请求的对象连接成一条线,所提交的请求沿链传递
组件:
Handler:抽象处理类,声明处理方法
ConcreteHandler:具体处理类,判断权限,进行处理
实例:java异常机制,Servlet中过滤器的链式处理,Struts2中拦截器的调用
UML:
迭代器模式(iterator(游标模式 cursor))
职能:提供一种可以遍历对象的方式
组件:
Aggregate:实现接口,聚合对象,进行数据的存储
Iterator:实现接口,迭代器,遍历数据,一般定义为内部类,只为一个特定的类提供服务
UML:
中介者模式 Mediator
职能:解耦多个对象之间的交互关系,使用中介者对象统一管理这些交互关系
两种对象:
①同事对象,一个系统中对象之间关系为网状结构,存在大量多对多关系,导致关系十分复杂
②中介者对象,使得同事对象只与中介者对象打交道,变为一对多关系,降低复杂度
组件:
Mediator:抽象中介者
Colleague:抽象同事类
ConcreteMediator:具体中介者,负责和各个同事类交互
ConcreteColleague:持有中介者的对象,和中介者进行交互
实例:MVC中的C(控制器),反射中的invoke()
UML:
命令模式(Command)
职能:将一个请求封装为一个对象,使得不同的请求对客户进行参数化
组件:
Command:抽象命令类
ConcreteCommand:具体命令类
Invoker:调用者/请求者
Receiver:接收者
实例:Structs2中action的调用过程,数据库事物机制的底层实现
UML:
状态模式
职能:用来解决系统中复杂对象的状态转换以及不同状态下行为的封装
组件:
Context:环境类,持有当前状态
State:抽象状态类
ConcreteState:具体状态类,每一个类都封装了一个状态应得行为
实例:线程对象各状态间得转换
UML:
PS:策略模式和状态模式
策略:需在每次调用时,外部进行指定
状态:只需指定初始状态,内部进行自动切换