设计模式-责任链模式
程序员文章站
2022-07-02 13:18:20
...
责任链模式-Chain of Responsiblity
从名字来看,一条链,连接许多对象,将数据从链头开始传递,一直到有人接收处理,有点类似于工业生产线的功能。
定义:责任链模式属于行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
举例:员工需要公司拨钱,于是上报头头项目经理,项目经理根据经费大小来确定是否在自己权限之内,如果超出则移交项目经理的头头总经理。具体代码如下:
Have a nice day~~
从名字来看,一条链,连接许多对象,将数据从链头开始传递,一直到有人接收处理,有点类似于工业生产线的功能。
定义:责任链模式属于行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
举例:员工需要公司拨钱,于是上报头头项目经理,项目经理根据经费大小来确定是否在自己权限之内,如果超出则移交项目经理的头头总经理。具体代码如下:
package test.patterns.chain; abstract class Handler{ public Handler handler; public abstract void agree(int price); } class Boss extends Handler{ public Boss() {} public Boss(Handler handler){ this.handler=handler; } @Override public void agree(int price) { System.out.println("总经理签字同意!"); } } class Manager extends Handler{ public Manager() {} public Manager(Handler handler){ this.handler=handler; } @Override public void agree(int price) { if (price <=10000) { System.out.println("项目经理签字同意!"); }else { System.out.println("项目经理说:这个我不能做主,得请示一下总经理!"); this.handler.agree(price); } } } public class ChainOfResponsibility { public static void main(String[] args) { Handler boss = new Boss(); Handler mangager = new Manager(boss); mangager.agree(1000); System.out.println("----华丽的分割线----"); mangager.agree(10001); } }
Have a nice day~~