成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

「HEAD-FIRST」之策略模式

mikyou / 2910人閱讀

摘要:這是一個(gè)設(shè)計(jì)模式系列本書所有案例均來自設(shè)計(jì)模式中文版地址歡迎大家策略模式定義了算法族,分別封裝起來,讓他們之間可以相互調(diào)用,此模式讓算法的變化獨(dú)立與調(diào)用算法的客戶端。

這是一個(gè)設(shè)計(jì)模式系列,本書所有案例均來自「Head-First設(shè)計(jì)模式(中文版)」, Github地址, 歡迎大家 watch, star

策略模式

定義了算法族,分別封裝起來,讓他們之間可以相互調(diào)用,此模式讓算法的變化獨(dú)立與調(diào)用算法的客戶端。

設(shè)計(jì)謎題

一個(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è)具體的武器行為類.

因?yàn)檫@是我們的第一個(gè)設(shè)計(jì)模式,后面我們將用其他模式更正這一點(diǎn).

戰(zhà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

相關(guān)文章

  • HEAD-FIRST觀察者模式

    摘要:這是一個(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 觀察者模...

    Songlcy 評(píng)論0 收藏0
  • 學(xué)習(xí)Java必讀的10本書籍

    摘要:學(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...

    masturbator 評(píng)論0 收藏0
  • Hello CKB!

    摘要:模塊鏈的共識(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 年元旦一過我們就迫不及...

    Kerr1Gan 評(píng)論0 收藏0
  • Hello,CKB:構(gòu)建加密經(jīng)濟(jì)網(wǎng)絡(luò)的重要里程碑

    摘要:年,包括分層的網(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)成...

    fou7 評(píng)論0 收藏0
  • PHP面試???em>之設(shè)計(jì)模式——策略模式

    摘要:策略模式介紹策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化。使用策略模式的好處策略模式提供了管理相關(guān)的算法族的辦法。使用策略模式可以避免使用多重條件轉(zhuǎn)移語句。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試??贾O(shè)計(jì)模式——工...

    Drinkey 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

mikyou

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<