Leiow 2016-10-20 02:49 采纳率: 0%
浏览 1168

关于建造者模式的代码问题

这样的代码,算是建造者模式吗?

 <?php
// 产品接口
interface ICar {
    public function start();
    public function run();
    public function stop();
}
// 产品类
final class Benz implements ICar {
    public function start() {
        echo 'Benz start the engine' . PHP_EOL;
    }
    public function run() {
        echo 'Benz run' . PHP_EOL;
    }
    public function stop() {
        echo 'Benz stop the engin' . PHP_EOL;
    }
}

// 抽象建造者
abstract class ABuilder {
    abstract public function build($seqeunce = array());
}
// 具体建造者
final class BenzBuilder extends ABuilder {
    private $_benz = null;
    private $_default_sequence = array(
        'start',
        'run',
        'stop'
    );
    public function __construct() {
        $this->_benz = new Benz();
    }
    public function build($sequence = array()) {
        foreach (empty($sequence) ? $this->_default_sequence : $sequence as $val) {
            $this->_benz->$val();
        }
    }
}

// 导演类
final class BenzDirector {
    public function getBenzA() {
        $benz = new BenzBuilder();
        $benz->build(array('run', 'start'));
    }
    public function getBenzB() {
        $benz = new BenzBuilder();
        $benz->build();
    }
}

$director = new BenzDirector();
echo str_repeat('-', 5) . 'build benz serial A' . str_repeat('-', 5) . PHP_EOL;
$director->getBenzA();
echo str_repeat('-', 5) . 'build benz serial B' . str_repeat('-', 5) . PHP_EOL;
$director->getBenzB();
  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2016-10-20 02:50
    关注

    应该算,你可以看看设计模式这本书

    评论

报告相同问题?

悬赏问题

  • ¥20 如何写正则表达式提前下面一段文字的数字
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题