Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Designmuster-Builder-Muster

PHP-Designmuster-Builder-Muster

不言
不言Original
2018-04-18 11:48:111817Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Builder-Modus des PHP-Designmodus. Jetzt kann ich ihn mit Ihnen teilen

Builder-Modus. Builder) ist ein Modus, der meiner Meinung nach unter den Erstellungsmodi relativ schwer zu verstehen ist.

Das Builder-Muster und das abstrakte Factory-Muster ähneln sich insofern, als sie beide Kombinationen erzeugen, abstrakte Fabriken werden jedoch häufiger und Builder seltener verwendet.

Das Merkmal des Builder-Musters ist die Trennung von Erstellung und Präsentation.

Nehmen wir weiterhin das Spiel als Beispiel: Wenn wir das Spiel spielen, um Helden zu erstellen, abstrahieren wir zuerst eine abstrakte Builder-Klasse, und dann erben alle Helden diese abstrakte Klasse. Die Heldenklasse ist die Repräsentationsklasse der Helden, die von der Schöpfung getrennt ist. Alle Helden können durch diese Klasse repräsentiert werden.

Wenn Sie Helden hinzufügen müssen, fügen Sie einfach eine Klasse ähnlich der Klasse GuanYu hinzu und schalten Sie den Client ein.

Der Aufnahmecode lautet wie folgt:

<?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();// 展示


Ausgabeergebnis:

Guan Yu betritt das Schlachtfeld
Der Trick ist: die Messertaktik ziehen
Die Waffe ist: Qinglong Yanyue-Schwert
Das Reittier ist: Red Rabbit Horse

Verwandte Empfehlungen:

Prototypmuster von PHP-Designmustern

PHP Design Pattern Singleton Pattern

PHP Design Pattern Abstract Factory


Das obige ist der detaillierte Inhalt vonPHP-Designmuster-Builder-Muster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn