2018-3-13-PHP设计模式【建造者模式】

layouttitledateauthordescin_head
post
PHP设计模式之建造者模式
2018-03-13 10:00:02 +0800
南丞
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
<style> .article-content p{ text-indent: 2em; line-height: 1.75rem; }</style>

建造者模式

<?php
header('Content-type:text/html;charset=utf-8');
/**
 * 实体 - 产品角色 - 汽车
 */
class Car{
    public $_head; // 车头
    public $_door; // 车门
    public $_foot; // 车尾
    public function show(){
        echo "车头的颜色:{$this->_head}<br/>";
        echo "车门的颜色:{$this->_door}<br/>";
        echo "车尾的颜色:{$this->_foot}<br/>";
    }
}
/**
 * 抽象 - 汽车的建造者
 */
abstract class CarBuilder{
    protected $_car; // 汽车实例
    public function __construct(){
        $this->_car = new Car();
    }
    abstract function BuildHead(); // 改变车头颜色
    abstract function BuildDoor(); // 改变车门颜色
    abstract function BuildFoot(); // 改变车尾颜色
    abstract function GetBird();   // 返回汽车实例
}
# 具体化 - 建造者 - 蓝色宝马
class BlueCar extends CarBuilder{
    public function BuildHead(){$this->_car->_head = '蓝色';}
    public function BuildDoor(){$this->_car->_door = '蓝色';}
    public function BuildFoot(){$this->_car->_foot = '蓝色';}
    public function GetBird(){return $this->_car;}
}
# 具体化 - 建造者 - 红色宝马
class RedCar extends CarBuilder{
    public function BuildHead(){$this->_car->_head = '红色';}
    public function BuildDoor(){$this->_car->_door = '红色';}
    public function BuildFoot(){$this->_car->_foot = '红色';}
    public function GetBird(){return $this->_car;}
}
/**
 * 实体 - 指挥者
 */
class Director{
    # 执行改造
    public function Construct($_builder){
        $_builder->BuildHead();
        $_builder->BuildDoor();
        $_builder->BuildFoot();
        return $_builder->GetBird();
    }
}
# 测试
$director = new Director();
echo '蓝色宝马的车辆信息: <br/>';
$blue_car = $director->Construct(new BlueCar());
$blue_car->Show();
echo '<br/>';
echo '红色宝马的车辆信息: <br/>';
$red_car = $director->Construct(new RedCar());
$red_car->Show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值