您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP设计模式之 建造者模式

2025/4/2 9:47:29发布36次查看
这篇文章介绍的内容是关于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设计模式之 建造者模式 的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product