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