书城计算机大话设计模式
11030400000045

第45章 3 责任型模式涉及到哪些角色

大B:责任链模式是一种对象的行为模式。你知道它都涉及到哪些角色吗?

小A:“嘿嘿!不知道喔!”

大B:“没关系,我告诉你。所涉及到的角色如下:第一、抽象处理者角色、定义出一个处理请求的接口;假如需要,接口可以定义出一个方法,以返回对下家的引用。”

大B:“在图中还给出了一个客户端,以便可以更清楚地看到责任链模式是怎样应用的。你能写出抽象处理者的示意性源代码吗?”

小A:“写不出来喔!还请师兄教我。”

大B:“好。”

抽象处理者的示意性源代码:

public class Handler

{

public void handleRequest()

{

if(successor!=null)

{

successor。handleRequest();

}

//Write your code here

}

public void setSuccessor(Handler successor)

{

this。successor=successor;

}

public Handler getSuccessor()

{

return successor;

}

private Handler successor;

}

代码清单8、抽象处理者的源代码。

具体处理者的示意性源代码:

public class ConcreteHandler extends Handler

{

public void handleRequest()

{

if(getSuccessor()!=null)

{

getSuccessor()。handleRequest();

}

if(successor!=null)

{

successor。handleRequest();

}

//Write your code here

}

}

代码清单9、具体处理者的源代码。

客户端的源代码如下:

public class Client

{

private Handler handler;

public static void main(String[]args)

{

handler=new ConcreteHandler();

//write your code here

}

}

代码清单10、客户端的源代码。