国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

「HEAD-FIRST」之策略模式

mikyou / 2898人閱讀

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

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

策略模式

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

設計謎題

一個冒險游戲,有多個游戲角色可以使用不同的武器,游戲中角色可以自由的切換武器,每個角色一次只能使用一樣武器.

類圖設計如下

抽象的武器行為接口

interface WeaponBehavior
{
    /**
     * 設置具體使用什么樣的武器
     *
     */
    public function useWeapon();
}

武器的具體實現類

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;
    }

    /**
     * 獲取角色戰斗力
     */
    public function fightPower()
    {
        return $this->weapon->useWeapon()
    }
}

角色的具體實現.

class King extends Character
{
    public function __construct()
    {
        //國王使用斧頭
        $this->setWeapon(new SwordBehavior);
    }
}

class Queen extends Character
{
    public function __construct()
    {
        //王后使用匕首
        $this->setWeapon(new KnifeBehavior);
    }
}
等等...

我們的設計原則是針對接口編程,但是我們仍然在角色的構造函數里制造一個具體的武器行為類.

因為這是我們的第一個設計模式,后面我們將用其他模式更正這一點.

戰斗
(new King)->fightPower(); //1024;
(new Queen)->fightPower(); //1;

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26169.html

相關文章

  • HEAD-FIRST觀察者模式

    摘要:這是一個設計模式系列本書所有案例均來自設計模式中文版地址歡迎大家觀察者模式定義了對象之間的一對多依賴當一個對象改變狀態時它的所有依賴者都將會收到通知并自動更新觀察者模式形容圖設計謎題有一個氣象觀察站我們希望建立一個應用有三種布告板用于顯示 這是一個設計模式系列,本書所有案例均來自「Head-First設計模式(中文版)」, Github地址, 歡迎大家 watch, star 觀察者模...

    Songlcy 評論0 收藏0
  • 學習Java必讀的10本書籍

    摘要:學習編程的本最佳書籍這些書涵蓋了各個領域,包括核心基礎知識,集合框架,多線程和并發,內部和性能調優,設計模式等。擅長解釋錯誤及錯誤的原因以及如何解決簡而言之,這是學習中并發和多線程的最佳書籍之一。 showImg(https://segmentfault.com/img/remote/1460000018913016); 來源 | 愿碼(ChainDesk.CN)內容編輯 愿碼Slo...

    masturbator 評論0 收藏0
  • Hello CKB!

    摘要:模塊鏈的共識配置,該配置會寫入創世塊。主要指責是記錄和更新本地累計工作量最高的鏈,并維護鏈上數據的索引。消息使用序列化。協議是節點之間用來處理廣播和轉發新的交易。 by Nervos CKB Team 在 2017 年底,我們感到心里的一些想法,包括分層的網絡以及一個作為共同知識庫(Common Knowledge Base)的區塊鏈,都已經成熟。因此 2018 年元旦一過我們就迫不及...

    Kerr1Gan 評論0 收藏0
  • Hello,CKB:構建加密經濟網絡的重要里程碑

    摘要:年,包括分層的網絡以及一個作為共同知識庫的區塊鏈,都已經成熟。是一個在設計上非常不同的公有鏈協議,也是網絡中的基礎層,是整個加密經濟網絡的信任引擎。主要指責是記錄和更新本地累計工作量最高的鏈,并維護鏈上數據的索引。 說到猿起,這些心里的想法能追溯到 2016 年,甚至更早。2017 年,包括分層的網絡以及一個作為共同知識庫(Common Knowledge Base)的區塊鏈,都已經成...

    fou7 評論0 收藏0
  • PHP面試???em>之設計模式——策略模式

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

    Drinkey 評論0 收藏0

發表評論

0條評論

mikyou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<