本篇文章為大家展示了怎么在php中應用策略模式,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
待解決的問題:我們需要根據(jù)種族的不同,而對玩家進行不同的初始化,好將這些不同的處理方式封裝。
思路:定義初始化的接口,然后制作不同種族的初始化類。
策略模式(Strategy)示例:
為了使代碼不至于過長,一部分類的定義不在此寫出,如果要調(diào)試,請用字符串等方式替代new。
<?php //玩家的類 class player { //所屬種族 public $race; //部隊 public $army; //建筑 public $building; //人口供給 public $supply; //構造函數(shù),設定所屬種族 public function __construct($race) { $this->race = $race; } } //初始化的接口 interface initialPlayer { //制造初始化的部隊 public function giveArmy($player); //制造初始化的建筑 public function giveBuilding($player); //初始化人口供給 public function giveSupply($player); } //蟲族的初始化算法 class zergInitial implements initialPlayer { //制造初始化的部隊 public function giveArmy($player) { //一個Overlord $player->army[] = new Overlord(); //四個蟲族農(nóng)民 for($i=0; $i<4;$i++) { $player->army[] = new Drone(); } } //制造初始化的建筑 public function giveBuilding($player) { //一個基地 $player->building[] = new Hatchery(); } //初始化人口供給 public function giveSupply($player) { //蟲族初始人口供給為9 $player->supply = 9; } } //人族的初始化算法 class terranInitial implements initialPlayer { //制造初始化的部隊 public function giveArmy($player) { //四個人族農(nóng)民 for($i=0; $i<4;$i++) { $player->army[] = new SVC(); } } //制造初始化的建筑 public function giveBuilding($player) { //一個基地 $player->building[] = new Hatchery(); } //初始化人口供給 public function giveSupply($player) { //人族初始人口供給為10 $player->supply = 10; } } //初始化的控制類 class initialController { //構造函數(shù),參數(shù)為玩家的數(shù)組 public function __construct($playerArray) { foreach ($playerArray as $player) { switch ($player->race) { case 'zerg': $initialController = new zergInitial(); break; case 'terran': $initialController = new terranInitial(); break; } $initialController->giveArmy($player); $initialController->giveBuilding($player); $initialController->giveSupply($player); } } } //假設兩個蟲族,一個人族 $playerArray = array( new player('zerg'), new player('zerg'), new player('terran'), ); //進行初始化工作 $initialController = new initialController($playerArray); ?>
用途總結(jié):策略模式可以將不同情況下的算法封裝,根據(jù)具體的情況調(diào)用。
實現(xiàn)總結(jié):需要一個接口,規(guī)定算法規(guī)范,使用者(比如初始化來)只要調(diào)用對應的算法就可以了。
上述內(nèi)容就是怎么在php中應用策略模式,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享文章:怎么在php中應用策略模式-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://aaarwkj.com/article10/cdpjgo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、自適應網(wǎng)站、用戶體驗、手機網(wǎng)站建設、網(wǎng)站改版、營銷型網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容