, .
, Handler, Handler, , . :
public Class Handler() {
private Handler next;
public setNext(Handler next) {
this.next = next;
}
public void action(params) {
if(some_condition) {
...
}
else {
if(next != null)
next.action(params);
}
}
}
, . , , visit. , , .
:
public Class Condition1 extends Handler {
public void action(BasicEvent e) {
if (condition1) {
if(e instanceof EventA)
if(e instanceof EventB)
if(e instanceof EventC)
if(e instanceof EventD)
}
else {
if(next != null)
next.action(BasicEvent e);
}
}
}
public Class Condition2 extends Handler {
public void action(BasicEvent e) {
if (condition2) {
if(e instanceof EventA)
if(e instanceof EventB)
if(e instanceof EventC)
if(e instanceof EventD)
}
else {
if(next != null)
next.action(BasicEvent e);
}
}
}
public Class ConditionElse extends Handler {
public void action(BasicEvent e) {
if(e instanceof EventA)
if(e instanceof EventB)
if(e instanceof EventC)
if(e instanceof EventD)
}
}
, ( ), :
Condition1 condition_1 = new Condition1();
Condition2 condition_2 = new Condition2();
ConditionElse condition_else = new new ConditionElse();
condition_1.setNext(condition_2);
condition_2.setNext(condition_else);
visit:
public void visit(BasicEvent e){
condition1.action(e);
}
, , . instanceof , 4 , , , .