责任链模式是我们发送一个请求,他处理不了就把他给了他的下一级,点击事件和有序广播;
处理者:
<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>
网友评论