### 职责链模式
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。(摘抄)
其实这个职责链模式有点像数据结构里面的并查集,找处理对象的过程,就像是找父亲的过程。
使用这种模式处理一些请求很方便,因为每一个类都可以只处理一种情况,当自己处理不了之后,就交给下一个类去处理,这样让每一个处理类都分工明确,而且转换十分灵活,可以随时增减处理对象和修改处理请求。
~~~
public abstract class Request
{
Request request;
public void setSuccessRequest(Request request)
{
this.request = request;
}
public abstract void doRequest(int req);
}
public class ConcreteRequest1 extends Request
{
@Override
public void doRequest(int req) {
// TODO Auto-generated method stub
if (req == 1)
{
System.out.println("req == 1");
}
else
{
request.doRequest(req);
}
}
}
public class ConcreteRequest2 extends Request
{
@Override
public void doRequest(int req) {
// TODO Auto-generated method stub
if (req != 1)
{
System.out.println("req != 1");
}
}
}
class Client
{
public static void main()
{
Request request1 = new ConcreteRequest1();
Request request2 = new ConcreteRequest2();
request1.setSuccessRequest(request2);
request1.doRequest(1);
}
}
~~~
通过代码可以很明显的看出只要构建好这条链那么处理只需要用这条链的头节点请求就可以了。
- 前言
- (1)代码无错就是优?——简单工厂模式
- (2)商场促销——策略模式
- (3)&(4)&(5) 设计模式原则
- (6)穿什么有这么重要?——装饰模式
- (7)为别人做嫁衣——代理模式
- (8)雷锋依然在人间——工厂方法模式
- (9)简历复印——原型模式
- (10)考题抄错会做也白搭——模板方法模式
- (11)迪米特法则
- (12)牛市股票还会亏钱?—— 外观模式
- (13)好菜每回味不同——建造者模式
- (14)老板回来,我不知道——观察者模式
- java实现事件委托
- (15)就不能不还DB吗?—— 抽象工厂模式
- (16)无尽加班何时休息——状态模式
- (17)在NBA我需要翻译——适配器模式
- (18)如果再回到从前——备忘录模式
- (19)分公司=部门——组合设计模式
- (20)想走?可以!先买票——迭代器模式
- (21)有些类也需计划生育——单例模式
- (22)手机软件何时统一——桥接模式
- (23)烤羊肉串引来的思考——命令模式
- (24)加薪非要老总批?——职责链模式
- (25)世界需要和平——中介者模式
- (26)项目多也别傻做——享元模式
- (28)男人和女人——访问者模式