建造者模式 php,PHP设计模式之 建造者模式

这篇文章介绍的内容是关于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 = "拖刀计
";

}

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();

}

}<?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 "关羽加入战场
";

$guanyuhero->Display();// 展示

输出结果:

关羽加入战场

绝招是:拖刀计

武器是:青龙偃月刀

坐骑是:赤兔马

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值