发表一下我的理解:
链是什么样的呢?是一环一环的,这一环的前后是什么东西只有这一环自己知道
于是构造个接口:
interface Manager{
void manageIt(int price);
Manager setNextManager(Manager manager);
}
abstract class AbstractManager implements Manager{
protected Manager next;
Manager setNextManager(Manager manager){
this.next=manager;
}
}
再构造几个环子:
class ManagerOne extends AbstractManager{
void manageIt(int price){
if(price<=100){
debug("here is One.I can manage it,do not post next,stop here");
}else{
next.manageIt(price);
}
}
}
class ManagerTwo extends AbstractManager{
void manageIt(int price){
if(price<=1000){
debug("here is Two.");
}else{
next.manageIt(price);
}
}
}
class ManagerThree extends AbstractManager{
void manageIt(int price){
if(price<=10000){
debug("here is Three.");
}else{
next.manageIt(price);
}
}
}
class ManagerLast extends AbstractManager{
void manageIt(int price){
if(price>10000){
debug("here is Last.");
}else{
debug("What happened?why here?");
throw new RuntimeException();
}
}
}
在客户端把环子串起来并实施调用
class Client{
//invoke it before
void init(){
Manager one=new ManagerOne();
Manager two=new ManagerTwo();
Manager three=new ManagerThree();
Manager last=new ManagerLast();
one.setNextManager(two);
two.setNextManager(three);
three.setNextManager(last);
}
void test(){
//数字200发言:其实我不知道到底哪个环在处理我,只要从第一个开始就可以了
//它处理不了我也不知道,反正有一个环处理了,或者到最后扔回来一个异常。
one.manageIt(200);
}
}
[该贴被freebox于2008-09-16 17:35修改过]