建造者模式
来源:互联网 发布:php源码测试软件 编辑:程序博客网 时间:2024/06/05 18:09
又名生成器模式,是一种对象构建模式。它可以将负责对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对戏那个的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。列如:一辆汽车由轮子、发动机以及其他零件组成,对于普通人而言,我们使用的只是一辆完整的车,这时,我们需要加入一个构造者,让他帮我们把这些组件按序组装成一辆完成的车
<?php abstract class Builder{ protected $car; abstract public function buildPartA(); abstract public function buildPartB(); abstract public function buildPartC(); abstract public function getResult(); } class CarBuilder extends Builder{ function __construct(){ $this->car=new Car(); } public function buildPartA(){ $this->car->setPartA('发动机'); } public function buildPartB(){ $this->car->setPartB('轮子'); } public function buildPartC(){ $this->car->setPartC('其他零件'); } public function getResult(){ return $this->car; } } class Car{ protected $partA; protected $partB; protected $partC; public function setPartA($str){ $this->partA=$str; } public function setPartB($str){ $this->partB=$str; } public function setPartC($str){ $this->partC=$str; } public function show(){ echo "这辆车由:".$this->partA.','.$this->partB.',和'.$this->partC.'组成'; } } class Director{ public $myBuilder; public function startBuild(){ $this->myBuilder->buildPartA(); $this->myBuilder->buildPartB(); $this->myBuilder->buildPartC(); return $this->myBuilder->getResult(); } public function setBuilder(Builder $builder){ $this->myBuilder=$builder; } } $carBuilder=new CarBuilder(); $director=new Director(); $director->setBuilder($carBuilder); $newCar=$director->startBuild(); $newCar->show(); ?>
阅读全文
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- 关键字 assert
- Block 循环引用浅谈
- yolo配置文件的参数说明和reorg层的理解!
- 国内有什么好的集群调度系统吗?
- Hibernate中Criteria的完整用法
- 建造者模式
- C++中的istringstream 的用法
- Unable to import Maven project into IntelliJ IDEA2017
- flume netcat source 监听 44444 -记flume官方文档的简单例子
- C
- java.lang.SecurityException: Requires android.permission.MOUNT_UNMOUNT_FILESYSTEMS permission
- Jump Game--lintcode
- css3自定义圆环
- 火狐浏览器中drop事件失效,event事件无作用