您的位置:首页 > 移动开发 > Android开发

Android设计模式~~~责任链模式

2016-09-11 14:07 246 查看
一.责任链模式介绍:

使多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的耦合关系,将这些对象连成一条链,并联着这条链传递该请求,知道有对象处理它为止。

二.使用场景:
对个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定。

三.例子:
<span style="font-size:18px;">public abstract class Leader {

/**
* 上一级了领导者
*/
protected Leader nextHandler ;

public final void handleRequest(int money){
if (money <= limit()){
handle(money);
}else{
if (nextHandler != null){
nextHandler.handleRequest(money);
}
}
}

/**
* 控制条件
* @return
*/
abstract int limit();

/**
* 具体处理行为
* @param money
*/
public abstract void handle (int money);

}
</span>

对象的抽象。

public class GroupLeaders extends Leader{

int limit() {
System.out.println("GroupLeaders.limit()");
return 500;
}

public void handle(int money) {
System.out.println("GroupLeaders.handle()"+limit());
}

}


public class Director extends Leader {

int limit() {
System.out.println("Director.limit()");
return 1000;
}

public void handle(int money) {
System.out.println("Director.handle()" + limit());

}

}


public class Manager extends Leader {

int limit() {
System.out.println("Manager.limit()");
return 2000;
}

public void handle(int money) {
System.out.println("Manager.limit()" + limit());

}

}

public class Boss extends Leader {

int limit() {
System.out.println("Boss.limit()");
return 1000000;
}

public void handle(int money) {
System.out.println("Boss.limit()"+limit());
}

}


各个对象的具体实现,分为几个级别,在各个对象中,有限制条件。如果满足限制条件,则在本类中处理,否则传递给下一级。

public class Test {

/**
* @param args
*/
public static void main(String[] args) {

GroupLeaders groupLeaders = new GroupLeaders();
Director director = new Director();
Manager manager = new Manager();
Boss boss = new Boss();

groupLeaders.nextHandler = director;
director.nextHandler = manager ;
manager.nextHandler = boss ;

groupLeaders.handleRequest(50000);
}

}
测试类。当限制是50000 时,各级的反应。
GroupLeaders.limit()
Director.limit()
Manager.limit()
Boss.limit()
Boss.limit()
Boss.limit()1000000


输出日志。 可以看到,最后是Boss对象处理的,前面都是只判断了是否符合限制条件。
OK!暂时就这样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: