有关责任链模式请参考[url]http://www.iteye.com/topic/343210[/url]
[size=large]引言[/size]:此变种模式是主要根据面向对象的设计原则之一的“类的单一职责”和“开放和封闭原则”演变而来。
[size=large]分析[/size]:原抽象处理者角色(Handler)是一个抽象类,代码一般如下:
通过分析我们可以发现其职责实际上有两个:
1.按照相应职责进行相应处理,即handleRequest方法;
2.设置下一个责任处理者;
现在我们企图把她的职责单一化,我们可以抽出两个接口,一个是处理请求接口,即:
另外一个可以独立设置处理链条,即:
最后,具体类实现这两个接口即可。
[size=large]引言[/size]:此变种模式是主要根据面向对象的设计原则之一的“类的单一职责”和“开放和封闭原则”演变而来。
[size=large]分析[/size]:原抽象处理者角色(Handler)是一个抽象类,代码一般如下:
# public abstract class Handler {
# protected Handler successor;
# protected String name;
#
# public String getName() {
# return name;
# }
#
# //处理请求,由子类完成
# public abstract void handleRequest(String request);
#
# //设置下一个处理请求的人
# public void setNextHandler(Handler successor) {
# this.successor = successor;
# }
# }
通过分析我们可以发现其职责实际上有两个:
1.按照相应职责进行相应处理,即handleRequest方法;
2.设置下一个责任处理者;
现在我们企图把她的职责单一化,我们可以抽出两个接口,一个是处理请求接口,即:
public interface Processor {
void process(Object request);
}
另外一个可以独立设置处理链条,即:
public interface Chain {
void add(Processor p);
void add(Processor p, int index);
void remove(Processor p);
void remove(Processor p, int index);
Processor get(int index);
int getCount();
}
最后,具体类实现这两个接口即可。