摘要:這是一個(gè)設(shè)計(jì)模式系列本書所有案例均來自設(shè)計(jì)模式中文版地址歡迎大家策略模式定義了算法族,分別封裝起來,讓他們之間可以相互調(diào)用,此模式讓算法的變化獨(dú)立與調(diào)用算法的客戶端。
策略模式這是一個(gè)設(shè)計(jì)模式系列,本書所有案例均來自「Head-First設(shè)計(jì)模式(中文版)」, Github地址, 歡迎大家 watch, star
設(shè)計(jì)謎題定義了算法族,分別封裝起來,讓他們之間可以相互調(diào)用,此模式讓算法的變化獨(dú)立與調(diào)用算法的客戶端。
一個(gè)冒險(xiǎn)游戲,有多個(gè)游戲角色可以使用不同的武器,游戲中角色可以自由的切換武器,每個(gè)角色一次只能使用一樣武器.
類圖設(shè)計(jì)如下
抽象的武器行為接口
interface WeaponBehavior { /** * 設(shè)置具體使用什么樣的武器 * */ public function useWeapon(); }
武器的具體實(shí)現(xiàn)類
class KnifeBehavior implements WeaponBehavior { public function useWeapon() { //使用小刀 return 1; } } class SwordBehavior implements WeaponBehavior { public function useWeapon() { //使用大保健 return 1024; } } //...
各種游戲角色均繼承自Character超類。
abstract public class Character { protected $weapon; public function setWeapon(WeaponBehavior $weapon) { $this->weapon = $weapon; } /** * 獲取角色戰(zhàn)斗力 */ public function fightPower() { return $this->weapon->useWeapon() } }
角色的具體實(shí)現(xiàn).
class King extends Character { public function __construct() { //國(guó)王使用斧頭 $this->setWeapon(new SwordBehavior); } } class Queen extends Character { public function __construct() { //王后使用匕首 $this->setWeapon(new KnifeBehavior); } }等等...
我們的設(shè)計(jì)原則是針對(duì)接口編程,但是我們?nèi)匀辉诮巧臉?gòu)造函數(shù)里制造一個(gè)具體的武器行為類.
戰(zhàn)斗因?yàn)檫@是我們的第一個(gè)設(shè)計(jì)模式,后面我們將用其他模式更正這一點(diǎn).
(new King)->fightPower(); //1024; (new Queen)->fightPower(); //1;
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26169.html
摘要:這是一個(gè)設(shè)計(jì)模式系列本書所有案例均來自設(shè)計(jì)模式中文版地址歡迎大家觀察者模式定義了對(duì)象之間的一對(duì)多依賴當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí)它的所有依賴者都將會(huì)收到通知并自動(dòng)更新觀察者模式形容圖設(shè)計(jì)謎題有一個(gè)氣象觀察站我們希望建立一個(gè)應(yīng)用有三種布告板用于顯示 這是一個(gè)設(shè)計(jì)模式系列,本書所有案例均來自「Head-First設(shè)計(jì)模式(中文版)」, Github地址, 歡迎大家 watch, star 觀察者模...
摘要:學(xué)習(xí)編程的本最佳書籍這些書涵蓋了各個(gè)領(lǐng)域,包括核心基礎(chǔ)知識(shí),集合框架,多線程和并發(fā),內(nèi)部和性能調(diào)優(yōu),設(shè)計(jì)模式等。擅長(zhǎng)解釋錯(cuò)誤及錯(cuò)誤的原因以及如何解決簡(jiǎn)而言之,這是學(xué)習(xí)中并發(fā)和多線程的最佳書籍之一。 showImg(https://segmentfault.com/img/remote/1460000018913016); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Slo...
摘要:模塊鏈的共識(shí)配置,該配置會(huì)寫入創(chuàng)世塊。主要指責(zé)是記錄和更新本地累計(jì)工作量最高的鏈,并維護(hù)鏈上數(shù)據(jù)的索引。消息使用序列化。協(xié)議是節(jié)點(diǎn)之間用來處理廣播和轉(zhuǎn)發(fā)新的交易。 by Nervos CKB Team 在 2017 年底,我們感到心里的一些想法,包括分層的網(wǎng)絡(luò)以及一個(gè)作為共同知識(shí)庫(Common Knowledge Base)的區(qū)塊鏈,都已經(jīng)成熟。因此 2018 年元旦一過我們就迫不及...
摘要:年,包括分層的網(wǎng)絡(luò)以及一個(gè)作為共同知識(shí)庫的區(qū)塊鏈,都已經(jīng)成熟。是一個(gè)在設(shè)計(jì)上非常不同的公有鏈協(xié)議,也是網(wǎng)絡(luò)中的基礎(chǔ)層,是整個(gè)加密經(jīng)濟(jì)網(wǎng)絡(luò)的信任引擎。主要指責(zé)是記錄和更新本地累計(jì)工作量最高的鏈,并維護(hù)鏈上數(shù)據(jù)的索引。 說到猿起,這些心里的想法能追溯到 2016 年,甚至更早。2017 年,包括分層的網(wǎng)絡(luò)以及一個(gè)作為共同知識(shí)庫(Common Knowledge Base)的區(qū)塊鏈,都已經(jīng)成...
摘要:策略模式介紹策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化。使用策略模式的好處策略模式提供了管理相關(guān)的算法族的辦法。使用策略模式可以避免使用多重條件轉(zhuǎn)移語句。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試??贾O(shè)計(jì)模式——工...
閱讀 3691·2021-10-09 09:44
閱讀 3395·2021-09-22 15:29
閱讀 3149·2019-08-30 15:54
閱讀 3026·2019-08-29 16:19
閱讀 2155·2019-08-29 12:50
閱讀 600·2019-08-26 14:04
閱讀 1706·2019-08-23 18:39
閱讀 1355·2019-08-23 17:59