責(zé)任鏈模式是我們發(fā)送一個(gè)請求,他處理不了就把他給了他的下一級(jí),點(diǎn)擊事件和有序廣播;
處理者:
<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批復(fù)" + 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批復(fù)" + 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批復(fù)" + 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批復(fù)100
03-07 18:59:22.584 28406-28406/com.lerz.zenrenliandemo I/CEO: handle: CEO批復(fù)1000
03-07 18:59:22.584 28406-28406/com.lerz.zenrenliandemo I/BOSS: handle: Boss批復(fù)10000
03-07 18:59:22.584 28406-28406/com.lerz.zenrenliandemo I/Loader: handleRequest: 你離職吧
</pre>