您的位置:首页 > 编程语言 > Java开发

java设计模式之责任链模式

2017-11-28 18:23 603 查看
java设计模式参考文章:

Java设计模式实战23种设计模式介绍以及在Java中的实现Java设计模式 Java经典设计模式之五大创建型模式

## 定义 ##

Chain of Responsibility(CoR)模式也叫职责链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。

## 代码举例 ##

案例: 雇员要求 (请假 ), 经理Manager -> 要经过总监Director的层层审批.

/**
* @author bwx
* @date 2017/11/28
* 定义一个处理请求的接口,
* 内持继任者(可选,也可以在其他方法中实现责任链的顺序关系)
*/
public abstract class Handler {
protected Handler nextHandler;

protected String name;

public Handler(Handler nextHandler, String name) {
this.nextHandler = nextHandler;
this.name = name;
}

public abstract void handleRequest(int id);
}

/**
* @author bwx
* @date 2017/11/28
* 经理
*/
public class Manager extends Handler {
public Manager(Handler nextHandler, String name) {
super(nextHandler, name);
}

public void handleRequest(int id) {
if (id > 20) {
System.out.println("经理审批:不是工号20以前的老员工,没有休假");
}
nextHandler.handleRequest(id);
}
}

/**
* @author bwx
* @date 2017/11/28
* 总监
*/
public class Director extends Handler {
public Director(Handler nextHandler, String name) {
super(nextHandler, name);
}

public void handleRequest(int id) {
if (id > 10) {
System.out.println("总监审批:不是工号10以前的老员工,没有休假");
}
}
}

/**
* @author bwx
* @date 2017/11/28
* Chain of Responsibility
* 责任链模式
*/
public class Main {
public static void main(String[] args) {
Handler director = new Director(null, "总监");
Handler handler = new Manager(director, "经理");
handler.handleRequest(50);
}
}


## 优点 ##

降低耦合度: 客户提交一个请求, 请求沿链传递直至一个ConcreteHandler最终处理, 接收者和发送者都没有对方的明确信息, 便于接受者与发送者的解耦.

增强给对象指派职责的灵活性: 链中对象自己并不清楚链结构,他们仅保持一个后继者指针, 因此责任链可简化对象的相互连接, 且可以随时增加或修改处理请求的对象, 增强了给对象指派职责的灵活性.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: