This article introduces the builder pattern of PHP design pattern, which has certain reference value. Now I share it with you. Friends in need can refer to
Builder pattern ( Builder) is a mode that I think is more difficult to understand among the creational modes.
The builder pattern and the abstract factory pattern are somewhat similar in that they both create combinations, but abstract factories are used more often and builders are less commonly used.
The characteristic of the builder pattern is the separation of creation and presentation.
Continuing to take the game as an example, when we play the game to create heroes, we first abstract an abstract builder class, and then all heroes inherit this abstract class. The Hero class is the representation class of heroes, which is separated from creation. All heroes can be represented through this class.
If you need to add heroes, just add a class similar to Class GuanYu and switch on the client.
The recording code is as follows:
<?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();// 展示
##Output result:
Guan Yu joins the battlefield
The trick is: dragging the knife
The weapon is: Qinglong Yanyue Sword
The mount is: Red Rabbit Horse
Related recommendations:
PHP Design Pattern Prototype Pattern
PHP Design Pattern of singleton pattern
PHP design pattern of abstract factory
The above is the detailed content of PHP design pattern builder pattern. For more information, please follow other related articles on the PHP Chinese website!