Android设计模式~~~责任链模式
2016-09-11 14:07
246 查看
一.责任链模式介绍:
使多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的耦合关系,将这些对象连成一条链,并联着这条链传递该请求,知道有对象处理它为止。
二.使用场景:
对个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定。
三.例子:
对象的抽象。
各个对象的具体实现,分为几个级别,在各个对象中,有限制条件。如果满足限制条件,则在本类中处理,否则传递给下一级。
输出日志。 可以看到,最后是Boss对象处理的,前面都是只判断了是否符合限制条件。
OK!暂时就这样
使多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的耦合关系,将这些对象连成一条链,并联着这条链传递该请求,知道有对象处理它为止。
二.使用场景:
对个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定。
三.例子:
<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!暂时就这样
相关文章推荐
- Android设计模式应用-责任链模式
- Android设计模式源码解析之责任链模式
- 【设计模式与Android】责任链模式——曹瞒兵败走华容
- 设计模式--[5]责任链模式和Android事件分发
- Android设计模式-责任链模式
- java/android 设计模式学习笔记(15)---责任链模式
- Android设计模式实战---责任链模式
- Android 设计模式 笔记 - 责任链模式
- Android设计模式源码解析之责任链模式
- android设计模式-责任链模式与View Touch Event分发
- Android设计模式之(8)----责任链模式
- Android设计模式之——责任链模式
- Android设计模式(八)-责任链模式
- Android的设计模式-责任链模式
- Android设计模式-责任链模式
- Android设计模式——责任链模式。
- Android设计模式之责任链模式
- Android设计模式之责任链模式
- Java/Android 设计模式系列(15)--责任链模式
- 十六.行为型设计模式——Chain of Responsibility(责任链模式)