Maison > développement back-end > tutoriel php > Modèle de générateur de modèle de conception PHP

Modèle de générateur de modèle de conception PHP

不言
Libérer: 2023-03-24 09:58:01
original
1846 Les gens l'ont consulté

Le contenu de cet article concerne le mode constructeur du mode conception PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent se référer au

Mode constructeur (. Builder) est un mode qui me semble relativement difficile à comprendre parmi les modes créationnels.

Le modèle de constructeur et le modèle d'usine abstraite sont quelque peu similaires dans le sens où ils créent tous deux des combinaisons, mais les usines abstraites sont utilisées plus souvent et les constructeurs sont moins couramment utilisés.

La caractéristique du patron constructeur est la séparation de la création et de la présentation.

En continuant à prendre le jeu comme exemple, lorsque nous créons un héros dans un jeu, nous faisons d'abord abstraction d'une classe de constructeur abstraite, puis tous les héros héritent de cette classe abstraite. La classe Héros est la classe de représentation des héros, séparée de la création. Tous les héros peuvent être représentés à travers cette classe.

Si vous avez besoin d'ajouter des héros, ajoutez simplement une classe similaire à la classe GuanYu et allumez le client.

Le code d'enregistrement est le suivant :

<?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();  
    }  
}
Copier après la connexion
<?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();// 展示
Copier après la connexion


Résultat de sortie :

Guan Yu rejoint le champ de bataille
L'astuce est la suivante : faire glisser la tactique du couteau
L'arme est : l'épée Qinglong Yanyue
La monture est : Cheval Lapin Rouge

Recommandations associées :

Modèle prototype de modèles de conception PHP

Modèle de conception PHP Singleton Pattern

Usine abstraite de modèle de conception PHP


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal