本文實例講述了php設計模式之職責鏈模式。分享給大家供大家參考,具體如下:
星際的兵種屬性隨著對平衡性的調(diào)節(jié),會進行修改。如果這樣的話,我們就要考慮減少一個事件和具體處理的關聯(lián)性。
比如一顆原子彈投下的瞬間,在殺傷范圍內(nèi)的部隊或者建筑都會減少血,但是隨著距離中心點的遠近,受損程度是不同的,而且不同的兵種和建筑受損情況是不同的。
待解決的問題:原子彈投下的瞬間,將殺傷的處理分別交給殺傷范圍內(nèi)的部隊或者建筑自己的方法處理。
思路:建立一個接口,讓所有的部隊或者建筑實現(xiàn)。
職責鏈模式(Chain of Responsibility)示例:
?php
//被原子彈攻擊的接口
interface NuclearAttacked
{
//處理被原子彈攻擊的方法,參數(shù)為投放點的x和y坐標
public function NuclearAttacked($x, $y);
}
//人族的基地,實現(xiàn)被原子彈攻擊的接口,其他的內(nèi)容暫時不考慮
class CommandCenter implements NuclearAttacked
{
//處理被原子彈攻擊的方法,參數(shù)為投放點的x和y坐標
public function NuclearAttacked($x, $y)
{
//根據(jù)離原子彈中心的距離,定義減少的血,如果超出了剩余的血,就炸掉
}
}
//巡洋艦(俗稱大和),實現(xiàn)被原子彈攻擊的接口,其他的內(nèi)容暫時不考慮
class Battlecruiser implements NuclearAttacked
{
//處理被原子彈攻擊的方法,參數(shù)為投放點的x和y坐標
public function NuclearAttacked($x, $y)
{
//根據(jù)離原子彈中心的距離,定義減少的血,如果超出了剩余的血,就炸掉
}
}
//原子彈類
class Nuclear
{
//被原子彈攻擊的對象
public $attackedThings;
//添加被原子彈攻擊的對象
public function addAttackedThings($thing)
{
//添加被原子彈攻擊的對象
$this->attackedThings[] = $thing;
}
//原子彈爆炸的方法,參數(shù)為投放點的x和y坐標
public function blast($x, $y)
{
//把爆炸的事情交給所有涉及的對象,讓他們自己處理
foreach ($this->attackedThings as $thing)
{
//把爆炸的事情交給所有涉及的對象,讓他們自己處理
$thing->NuclearAttacked($x, $y);
}
}
}
//新建一個基地對象
$CommandCenter = new CommandCenter();
//新建一個巡洋艦對象
$Battlecruiser = new Battlecruiser();
//造了一顆原子彈
$Nuclear2 = new Nuclear();
//假設投放成功,那個瞬間一個基地對象和一個巡洋艦對象在殺傷范圍內(nèi)
$Nuclear2->addAttackedThings($CommandCenter);
$Nuclear2->addAttackedThings($Battlecruiser);
//原子彈爆炸,這樣就把這個事件交給那些涉及的對象的處理方法,假設投放點的x和y坐標是2353, 368
$Nuclear2->blast(2353, 368);
?>
用途總結(jié):職責鏈模式可以將一個涉及到多個對象的事件的處理交給對象自己處理,減少關聯(lián)性。
實現(xiàn)總結(jié):需要一個處理事件的接口,然后讓所有的對象實現(xiàn)。
更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:- php設計模式 Adapter(適配器模式)
- PHP設計模式之適配器模式代碼實例
- php設計模式之適配器模式原理、用法及注意事項詳解
- php設計模式之迭代器模式實例分析【星際爭霸游戲案例】
- php設計模式之觀察者模式實例詳解【星際爭霸游戲案例】
- php設計模式之正面模式實例分析【星際爭霸游戲案例】
- php設計模式之模板模式實例分析【星際爭霸游戲案例】
- php設計模式之原型模式分析【星際爭霸游戲案例】
- php設計模式之代理模式分析【星際爭霸游戲案例】
- php設計模式之中介者模式分析【星際爭霸游戲案例】
- php設計模式之適配器模式實例分析【星際爭霸游戲案例】