真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【設(shè)計(jì)模式與Android】責(zé)任鏈模式——曹瞞兵敗走華容

什么是責(zé)任鏈模式

創(chuàng)新互聯(lián)2013年至今,先為新余等服務(wù)建站,新余等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為新余企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

 

所謂責(zé)任鏈模式,就是使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,并講這些對(duì)象連成一條鏈,沿著這條鏈傳遞請(qǐng)求直到有對(duì)象處理請(qǐng)求為止的設(shè)計(jì)模式。責(zé)任鏈模式可以避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。

 

責(zé)任鏈模式的實(shí)現(xiàn)方式

 

熟悉我的人都知道我對(duì)華容道游戲情有獨(dú)鐘,2014年用AndEngine實(shí)現(xiàn)了一個(gè)華容道交了畢業(yè)設(shè)計(jì),2015年用OGEngine參賽中了一部手機(jī)……我每年都要用不同的新技術(shù)實(shí)現(xiàn)一遍華容道。華容道的背景故事請(qǐng)見(jiàn)《三國(guó)演義》第五十回。

 

這次我拿華容道給大家講解一遍責(zé)任鏈模式,首先定義一個(gè)抽象的將軍類(lèi):

public abstract classGeneral {

    protectedGeneralnextGeneral;

    /**
     * 姓名
     */
    public abstractString getName();

    /**
     * 武力
     */
    public abstract intgetForce();

    /**
     * 攔截曹操
     *@paramforce曹操手下將軍能拿出來(lái)的最高武力
     */
    public final voidtryCaoCao(intforce){
        if(force <= getForce()){
            catchCaoCao();
        }else{
            if(nextGeneral!=null){
                nextGeneral.tryCaoCao(force);
            }
        }
    }

    /**
     * 有能力抓獲曹操
     */
    public voidcatchCaoCao(){
        Log.e("曹操無(wú)路可逃","曹操兵敗走華容,正與"+ getName() +"狹路逢。只為當(dāng)初恩義重,放開(kāi)金鎖走蛟龍。");
    }

}

 

趙云:

public classZhaoYunextendsGeneral {
    @Override
    publicString getName() {
        return"趙云";
    }

    @Override
    public intgetForce() {
        return95;
    }
}

 

張飛:

public classZhangFeiextendsGeneral {
    @Override
    publicString getName() {
        return"張飛";
    }

    @Override
    public intgetForce() {
        return97;
    }
}

 

關(guān)羽:

public classGuanYuextendsGeneral {
    @Override
    publicString getName() {
        return"關(guān)羽";
    }

    @Override
    public intgetForce() {
        return100;
    }
}

 

曹操走華容道:

ZhaoYun zhaoYun =newZhaoYun();
ZhangFei zhangFei =newZhangFei();
GuanYu guanYu =newGuanYu();

zhaoYun.nextGeneral= zhangFei;
zhangFei.nextGeneral= guanYu;

zhaoYun.tryCaoCao(99);

 

你可以試試,輸出結(jié)果和《三國(guó)演義》的劇情是否一致。

 

Android源碼中的責(zé)任鏈模式

 

(1)如果你讀完上文的代碼之后,沒(méi)有想到ViewGroup事件的分發(fā)處理機(jī)制,那么你不適合學(xué)習(xí)設(shè)計(jì)模式,還是先補(bǔ)充補(bǔ)充基礎(chǔ)知識(shí)吧。

 

Android開(kāi)發(fā)中如何利用責(zé)任鏈模式

 

(1)責(zé)任鏈模式可以對(duì)請(qǐng)求者和處理者關(guān)系解耦,提高代碼的靈活性。Broadcast可以分為異步的Normal Broadcast和根據(jù)優(yōu)先級(jí)依次傳播的Ordered Broadcast(有序廣播)兩種,有序廣播根據(jù)優(yōu)先級(jí)依次傳播,直到有接收者將其終止或所有接收者都不中止它,這是典型的責(zé)任鏈模式。

 

需要注意的幾個(gè)問(wèn)題

 

(1)責(zé)任鏈模式的最大缺點(diǎn)在于其對(duì)鏈中請(qǐng)求處理者的遍歷,如果處理者層級(jí)太多,尤其是在遞歸調(diào)用中,責(zé)任鏈模式非常影響性能。


當(dāng)前題目:【設(shè)計(jì)模式與Android】責(zé)任鏈模式——曹瞞兵敗走華容
分享地址:http://weahome.cn/article/pjdocs.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部