php設(shè)計(jì)模式之職責(zé)鏈模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
本文實(shí)例講述了php設(shè)計(jì)模式之職責(zé)鏈模式。分享給大家供大家參考,具體如下:
星際的兵種屬性隨著對(duì)平衡性的調(diào)節(jié),會(huì)進(jìn)行修改。如果這樣的話,我們就要考慮減少一個(gè)事件和具體處理的關(guān)聯(lián)性。
比如一顆原子彈投下的瞬間,在殺傷范圍內(nèi)的部隊(duì)或者建筑都會(huì)減少血,但是隨著距離中心點(diǎn)的遠(yuǎn)近,受損程度是不同的,而且不同的兵種和建筑受損情況是不同的。
待解決的問(wèn)題:原子彈投下的瞬間,將殺傷的處理分別交給殺傷范圍內(nèi)的部隊(duì)或者建筑自己的方法處理。
思路:建立一個(gè)接口,讓所有的部隊(duì)或者建筑實(shí)現(xiàn)。
職責(zé)鏈模式(Chain of Responsibility)示例:
<?php
//被原子彈攻擊的接口
interface NuclearAttacked
{
//處理被原子彈攻擊的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
public function NuclearAttacked($x, $y);
}
//人族的基地,實(shí)現(xiàn)被原子彈攻擊的接口,其他的內(nèi)容暫時(shí)不考慮
class CommandCenter implements NuclearAttacked
{
//處理被原子彈攻擊的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
public function NuclearAttacked($x, $y)
{
//根據(jù)離原子彈中心的距離,定義減少的血,如果超出了剩余的血,就炸掉
}
}
//巡洋艦(俗稱(chēng)大和),實(shí)現(xiàn)被原子彈攻擊的接口,其他的內(nèi)容暫時(shí)不考慮
class Battlecruiser implements NuclearAttacked
{
//處理被原子彈攻擊的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
public function NuclearAttacked($x, $y)
{
//根據(jù)離原子彈中心的距離,定義減少的血,如果超出了剩余的血,就炸掉
}
}
//原子彈類(lèi)
class Nuclear
{
//被原子彈攻擊的對(duì)象
public $attackedThings;
//添加被原子彈攻擊的對(duì)象
public function addAttackedThings($thing)
{
//添加被原子彈攻擊的對(duì)象
$this->attackedThings[] = $thing;
}
//原子彈爆炸的方法,參數(shù)為投放點(diǎn)的x和y坐標(biāo)
public function blast($x, $y)
{
//把爆炸的事情交給所有涉及的對(duì)象,讓他們自己處理
foreach ($this->attackedThings as $thing)
{
//把爆炸的事情交給所有涉及的對(duì)象,讓他們自己處理
$thing->NuclearAttacked($x, $y);
}
}
}
//新建一個(gè)基地對(duì)象
$CommandCenter = new CommandCenter();
//新建一個(gè)巡洋艦對(duì)象
$Battlecruiser = new Battlecruiser();
//造了一顆原子彈
$Nuclear2 = new Nuclear();
//假設(shè)投放成功,那個(gè)瞬間一個(gè)基地對(duì)象和一個(gè)巡洋艦對(duì)象在殺傷范圍內(nèi)
$Nuclear2->addAttackedThings($CommandCenter);
$Nuclear2->addAttackedThings($Battlecruiser);
//原子彈爆炸,這樣就把這個(gè)事件交給那些涉及的對(duì)象的處理方法,假設(shè)投放點(diǎn)的x和y坐標(biāo)是2353, 368
$Nuclear2->blast(2353, 368);
?>
用途總結(jié):職責(zé)鏈模式可以將一個(gè)涉及到多個(gè)對(duì)象的事件的處理交給對(duì)象自己處理,減少關(guān)聯(lián)性。
實(shí)現(xiàn)總結(jié):需要一個(gè)處理事件的接口,然后讓所有的對(duì)象實(shí)現(xiàn)。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php設(shè)計(jì)模式 Adapter(適配器模式)
- PHP設(shè)計(jì)模式之適配器模式代碼實(shí)例
- php設(shè)計(jì)模式之適配器模式原理、用法及注意事項(xiàng)詳解
- php設(shè)計(jì)模式之迭代器模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
- php設(shè)計(jì)模式之觀察者模式實(shí)例詳解【星際爭(zhēng)霸游戲案例】
- php設(shè)計(jì)模式之正面模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
- php設(shè)計(jì)模式之模板模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
- php設(shè)計(jì)模式之原型模式分析【星際爭(zhēng)霸游戲案例】
- php設(shè)計(jì)模式之代理模式分析【星際爭(zhēng)霸游戲案例】
- php設(shè)計(jì)模式之中介者模式分析【星際爭(zhēng)霸游戲案例】
- php設(shè)計(jì)模式之適配器模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
相關(guān)文章
NativePHP使用PHP創(chuàng)建桌面應(yīng)用程序
這篇文章主要為大家介紹了NativePHP使用PHP創(chuàng)建桌面應(yīng)用程序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
PHP實(shí)現(xiàn)與java 通信的插件使用教程
這篇文章主要介紹了PHP與java 通信插件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2019-08-08
詳解PHP中curl_multi并發(fā)的實(shí)現(xiàn)
這篇文章主要介紹了詳解PHP中curl_multi并發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
ajax php傳遞和接收變量實(shí)現(xiàn)思路及代碼
在實(shí)際應(yīng)用中會(huì)遇到這種情況:ajax與php之間傳遞和接收變量,為了實(shí)現(xiàn)這一功能應(yīng)用,很多新手朋友們,只能望洋興嘆啊,于是本人搜集整理一些實(shí)用技巧,曬出來(lái)和大家分享,希望可以幫助你們2012-12-12
Yii編程開(kāi)發(fā)常見(jiàn)調(diào)用技巧集錦
這篇文章主要介紹了Yii編程開(kāi)發(fā)常見(jiàn)調(diào)用技巧,涉及Yii針對(duì)cookie、數(shù)據(jù)庫(kù)、URL、項(xiàng)目等相關(guān)操作技巧,需要的朋友可以參考下2016-07-07

