一个更加简洁的 建造者模式
2015-11-25 14:36
218 查看
<?php /** * 建造者模式 * 将一个复杂对象的构造与它的表示分离,是同样的构建过程可以创建不同的表示; * 目的是为了消除其他对象复杂的创建过程 */ /** * 产品,包含产品类型、价钱、颜色属性 */ class Product { public $_type = null; public $_price = null; public $_color = null; //建造产品的类型 public function setType($type) { echo 'set the type of the product,'; $this->_type = $type; } //建造产品的价格 public function setPrice($price) { echo 'set the price of the product,'; $this->_price = $price; } //建造产品的颜色 public function setColor($color) { echo 'set the color of the product,'; $this->_color = $color; } } /*将要建造的,目标对象的参数*/ $config = array ( 'type' => 'shirt', 'price' => 100, 'color' => 'red', ); /*不使用建造者模式*/ $product = new Product(); $product->setType($config['type']); $product->setPrice($config['price']); $product->setColor($config['color']); //var_dump($product); /** * builder类--使用建造者模式 */ class ProductBuilder { public $_config = null; public $_object = null; public function ProductBuilder($config) { $this->_object = new Product();//在这里借用具体生产过程的对象 $this->_config = $config; } public function build() { echo '建造类开始工作了:'; $this->_object->setType($this->_config['type']); $this->_object->setPrice($this->_config['price']); $this->_object->setColor($this->_config['color']); } public function getProduct() { return $this->_object; } } $objBuilder = new ProductBuilder($config);//新建一个建造者 $objBuilder->build();//建造者去建造 $objProduct = $objBuilder->getProduct();//建造者返回-它建造的东西 var_dump($objProduct); ?>
相关文章推荐
- 阮一峰:jQuery最佳实践
- redhat6.6配置光盘为yum源
- IOS Runtime(四)
- dubbo extension扩展点 源代码
- [转]Ionic 实现双击返回键退出功能
- Mybatis传递多个参数
- UISegmentedControl用法详解
- Java注解
- 语音编码算法
- Mysql 学习笔记之索引篇
- 使用android:process的注意事项
- IOS Runtime(三)
- javascript实现很浪漫的气泡冒出特效
- 天生人语
- RTP/RTCP/SRTP语音传输技术
- 移动端开发 干货知识分享
- Javascript异步编程的4种方法
- Eclipse快捷键 10个最有用的快捷键
- BZOJ2535: [Noi2010]Plane 航空管制2
- C#定制Excel界面并实现与数据库交互的方法