首頁 >後端開發 >php教程 >PHP設計模式之 建造者模式

PHP設計模式之 建造者模式

不言
不言原創
2018-04-18 11:48:111842瀏覽

這篇文章介紹的內容是關於PHP設計模式之建造者模式,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

## 建造者模式( Builder) 是我認為在創造型模式中算比較難理解的模式。

 建造者模式和抽象工廠模式有點相似都是去創建組合,但是抽象工廠用的多,建造者不常用。

 建造者模式的特徵是將創建和表示分開。

 繼續以遊戲為例,我們玩遊戲創建英雄的時候,首先去抽象化一個抽象建造者類,接著所有的英雄都繼承這個抽象類別。而Hero類是   英雄的表示類,與創造分離,所有英雄都可以透過這個類別表示出來。

 如果需要增加英雄就直接加入類似Class GuanYu的類別就好,在客戶端切換。


 記錄程式碼如下:

<?php  
     
Class Hero  
{  
    // 技能  
    public $_skill;  
  
    // 武器  
    public $_weapon;  
  
    // 坐骑  
    public $_horse;  
  
    /** 英雄表示方法,不同英雄又不同表示    
     *  Display     
     */   
    function Display()  
    {  
        echo "绝招是:{$this->_skill}";  
        echo "武器是:{$this->_weapon}";  
        echo "坐骑是:{$this->_horse}";  
    }  
}  
  
/** 英雄建造器 抽象类  
 *  abstract HeroBuilder     
 */  
abstract Class HeroBuilder  
{  
    protected $_hero;  
    function __construct()  
    {  
        $this->_hero = new Hero();  
    }  
  
    //抽象英雄绝招方法  
    abstract function HeroSkill();  
  
    //抽象英雄武器方法  
    abstract function HeroWeapon();  
  
    //抽象英雄坐骑方法  
    abstract function HeroHorse();  
  
    // 创建英雄方法  
    abstract function CreateHero();  
}  
  
/** 关羽英雄类 继承抽象类必须完成抽象方法 
 *  GuanYu    
 */  
Class GuanYu extends HeroBuilder  
{     
    function HeroSkill()  
    {  
        $this->_hero->_skill = "拖刀计<br/>";  
    }  
    function HeroWeapon()  
    {  
        $this->_hero->_weapon = "青龙偃月刀<br/>";  
    }  
    function HeroHorse()  
    {  
        $this->_hero->_horse = "赤兔马<br/>";  
    }  
    function CreateHero()  
    {  
        return $this->_hero;  
    }  
}  
  
/** 英雄接口类 
 *  HeroApi    
 */  
Class HeroApi  
{  
    function Create($_obj)  
    {  
        $_obj->HeroSkill();  
        $_obj->HeroWeapon();  
        $_obj->HeroHorse();  
        return $_obj->CreateHero();  
    }  
}
<?php  
// 建造者模式 index.php  
header("Content-Type:text/html;charset=utf-8");  
require_once "Builder.php";  
  
// 英雄接口类   
$obj = new HeroApi();  
  
// 创建关羽英雄对象  以后想用什么就创建什么  
$guanyu = new GuanYu();  
  
// 创建加入战场  
$guanyuhero = $obj->Create($guanyu);  
  
echo "关羽加入战场<br/>";  
$guanyuhero->Display();// 展示


#輸出結果:

關羽加入戰場
絕招是:拖曳刀計
武器是:青龍偃月刀
坐騎是:赤兔馬


相關推薦:


######PHP設計模式之原型模式###############PHP設計模式之單例模式############PHP設計模式之抽象工廠###############

以上是PHP設計模式之 建造者模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn