責(zé)任鏈模式

責(zé)任鏈的主要思想是,對(duì)象引用同一類型的對(duì)象,形成一條鏈,鏈中的每個(gè)對(duì)象實(shí)現(xiàn)了相同的方法,處理鏈中對(duì)一個(gè)對(duì)象發(fā)起的同一個(gè)請(qǐng)求,如果一個(gè)對(duì)象不知道如果處理請(qǐng)求,它就把他傳到下一個(gè)響應(yīng)器。責(zé)任鏈類圖如下:

屏幕快照 2016-04-13 下午11.15.04.png

就以此類圖說(shuō)明,假定有三個(gè)對(duì)象Avatar對(duì)象avatar ,MetalArmor對(duì)象armor和CryatelShield對(duì)象shield,構(gòu)成責(zé)任鏈shield-》armor-》avatar,現(xiàn)在收到一個(gè)攻擊假定為attack對(duì)象,此時(shí),shield會(huì)收到handleAttack:attack的消息,shield會(huì)調(diào)用用handleAttack方法應(yīng)對(duì)攻擊,shield發(fā)現(xiàn)自己并不能處理這類的攻擊,于是它將該消息傳給了責(zé)任鏈中的下一個(gè)響應(yīng)者armor,armor調(diào)用handleAttack方法,發(fā)現(xiàn)自己也不能處理該類型的攻擊,也只能傳給avatar,因?yàn)橹暗膶?duì)象都不能處理該類攻擊,avatar只能自己來(lái)處理該類攻擊,avatar角色表現(xiàn)出受到攻擊,血量下降等。如果sheild和armor中一個(gè)能夠完全處理該類的攻擊,那么就不會(huì)將消息傳遞到下一個(gè)響應(yīng)者,avatar就不會(huì)受到攻擊的消息。這只是個(gè)責(zé)任鏈?zhǔn)褂玫囊粋€(gè)例子,通過(guò)例子更能夠深入理解這種設(shè)計(jì)模式,
其實(shí)我們iOS開發(fā)中的響應(yīng)鏈也是采用這種設(shè)計(jì)模式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容