《Android源碼設(shè)計(jì)模式解析和實(shí)戰(zhàn)》責(zé)任鏈模式

責(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>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 責(zé)任鏈模式 介紹 對于鏈?zhǔn)浇Y(jié)構(gòu),將每一個(gè)節(jié)點(diǎn)看做一個(gè)對象,每一個(gè)對象擁有不同的處理邏輯,將一個(gè)請求從鏈?zhǔn)降氖锥税l(fā)出...
    appcompat_v7閱讀 333評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 曾經(jīng)從沒有想過自己走一段自己不曾走過的路,去到一些不曾去過的地方,去見一些不曾見過的人,只因?yàn)樵谧约翰辉脒^的...
    默清語閱讀 228評論 0 1
  • 消逝在周遭耳語 漸隱入觀光客的旅游鞋底 時(shí)間正撐開手帕,準(zhǔn)備好三只白兔 戲法中置換神話典故 初雪已匿形許久 寂寞回...

友情鏈接更多精彩內(nèi)容