《Android源码设计模式解析和实战》责任链模式

责任链模式是我们发送一个请求,他处理不了就把他给了他的下一级,点击事件和有序广播;

处理者:
<pre>
public abstract class Loader {
private static final String TAG = "Loader";
protected Loader nextHandle;

public final void handleRequest(int money) {
    if (money <= getLimit()) {
        handle(money);
    } else {
        if (nextHandle != null) {
            nextHandle.handleRequest(money);
        } else {
            Log.i(TAG, "handleRequest: " + "你离职吧");
        }
    }
}

public abstract int getLimit();

public abstract void handle(int money);

}
public class Manager extends Loader {
private static final String TAG = "Manager";

@Override
public int getLimit() {
    return 100;
}

@Override
public void handle(int money) {
    Log.i(TAG, "handle: Manager批复" + money);
}

}

public class CEO extends Loader {
private static final String TAG = "CEO";

@Override
public int getLimit() {
    return 1000;
}

@Override
public void handle(int money) {
    Log.i(TAG, "handle: CEO批复" + money);
}

}
public class BOSS extends Loader {
private static final String TAG = "BOSS";

@Override
public int getLimit() {
    return 10000;
}

@Override
public void handle(int money) {
    Log.i(TAG, "handle: Boss批复" + money);
}

}
</pre>

使用
<pre>
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    BOSS boss = new BOSS();
    CEO ceo = new CEO();
    Manager manager = new Manager();
    manager.nextHandle = ceo;
    ceo.nextHandle = boss;
    manager.handleRequest(100);
    manager.handleRequest(1000);
    manager.handleRequest(10000);
    manager.handleRequest(100000);
}

}
</pre>
log
<pre>
03-07 18:59:22.584 28406-28406/com.lerz.zenrenliandemo I/Manager: handle: Manager批复100
03-07 18:59:22.584 28406-28406/com.lerz.zenrenliandemo I/CEO: handle: CEO批复1000
03-07 18:59:22.584 28406-28406/com.lerz.zenrenliandemo I/BOSS: handle: Boss批复10000
03-07 18:59:22.584 28406-28406/com.lerz.zenrenliandemo I/Loader: handleRequest: 你离职吧
</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 责任链模式 介绍 对于链式结构,将每一个节点看做一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端发出...
    appcompat_v7阅读 289评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,869评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,076评论 25 708
  • 曾经从没有想过自己走一段自己不曾走过的路,去到一些不曾去过的地方,去见一些不曾见过的人,只因为在自己不曾想过的...
    默清语阅读 204评论 0 1
  • 消逝在周遭耳语 渐隐入观光客的旅游鞋底 时间正撑开手帕,准备好三只白兔 戏法中置换神话典故 初雪已匿形许久 寂寞回...
    凯恩期主义总中奖曲线阅读 373评论 0 2