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