模式定义:
使多个对象都有机会处理请求,避免发送者与接受者直接的耦合关系。
模式结构:
抽象接收者类,由一些方法以及 另一个抽象接受者类 组成。
模式实现:
public class IteratorPatternModel {
@Test
public void testMain() {
Leader groupLeader = new GroupLeader();
Leader manager = new Manager();
groupLeader.superLeader = manager;
groupLeader.handleMoney(3377);
}
abstract class Leader {
protected Leader superLeader;
public void handleMoney(int money) {
if (money <= limit()) {
handle();
} else if (superLeader != null) {
superLeader.handleMoney(money);
} else {
System.out.println("no body can handle money");
}
}
abstract int limit();
abstract void handle();
}
class GroupLeader extends Leader {
@Override
int limit() {
return 100;
}
@Override
void handle() {
System.out.println("group leader handle money");
}
}
class Manager extends Leader {
@Override
int limit() {
return 1000;
}
@Override
void handle() {
System.out.println("manager handle money");
}
}
}
适用场景:
1、多个对象可以处理同一个请求,但由哪个对象处理则在运行时动态决定
2、需要动态指定一组对象处理请求