这篇文章介绍的内容是关于php设计模式之 建造者模式 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
建造者模式(Builder) 是我认为在创建型模式中算比较难理解的一种模式。
建造者模式和抽象工厂模式有点相似都是去创建组合,但是抽象工厂用的多,建造者不常用。
建造者模式的特点就是将创建和表示分离。
继续以游戏为例,我们玩游戏创建英雄的时候,首先去抽象一个抽象建造者类,接着所有的英雄都继承这个抽象类。而Hero类是 英雄的表示类,与创建分离,所有英雄都可以通过这个类表示出来。
如果需要增加英雄就直接添加一个类似Class GuanYu的类就好,在客户端切换。
记录代码如下:
_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 = "拖刀计
";
}
function HeroWeapon()
{
$this->_hero->_weapon = "青龙偃月刀
";
}
function HeroHorse()
{
$this->_hero->_horse = "赤兔马
";
}
function CreateHero()
{
return $this->_hero;
}
}
/** 英雄接口类
* HeroApi
*/
Class HeroApi
{
function Create($_obj)
{
$_obj->HeroSkill();
$_obj->HeroWeapon();
$_obj->HeroHorse();
return $_obj->CreateHero();
}
}Create($guanyu); echo "关羽加入战场
"; $guanyuhero->Display();// 展示
输出结果:
关羽加入战场
绝招是:拖刀计
武器是:青龙偃月刀
坐骑是:赤兔马
相关推荐:











