PHP设计模式 - 建造者模式
2024-10-20 03:49:20
建造者模式主要在于创建一些复杂的对象。将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式;
结构图:
<?php
/**
*
* 产品本身
*/
class Product {
private $_parts;
public function __construct() { $this->_parts = array(); }
public function add($part) { return array_push($this->_parts, $part); }
} /**
* 建造者抽象类
*
*/
abstract class Builder {
public abstract function buildPart1();
public abstract function buildPart2();
public abstract function getResult();
} /**
*
* 具体建造者
* 实现其具体方法
*/
class ConcreteBuilder extends Builder {
private $_product;
public function __construct() { $this->_product = new Product(); }
public function buildPart1() { $this->_product->add("Part1"); }
public function buildPart2() { $this->_product->add("Part2"); }
public function getResult() { return $this->_product; }
}
/**
*
*导演者
*/
class Director {
public function __construct(Builder $builder) {
$builder->buildPart1();//导演指挥具体建造者生产产品
$builder->buildPart2();
}
} // client
$buidler = new ConcreteBuilder();
$director = new Director($buidler);
$product = $buidler->getResult();
echo "<pre>";
var_dump($product);
echo "</pre>";
/*输出: object(Product)#2 (1) {
["_parts":"Product":private]=>
array(2) {
[0]=>string(5) "Part1"
[1]=>string(5) "Part2"
}
} */
?>
最新文章
- Java核心技术点之多线程
- exgcd,求乘法逆元
- Webpack 之 Loader 的使用
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)
- Nginx-SSI
- C#多线程与UI响应 跨线程更新UI
- apache 多站点搭建
- jquery 的attr()方法解析
- [TYVJ] P1027 木瓜地
- Android中适用于ListView、GridView等组件的通用Adapter
- 对Java原子类AtomicInteger实现原理的一点总结
- 蓝桥杯刷题,第四界省赛B组
- 关于servelt的相关介绍
- SQLServer Always On FCI 脑裂及可疑状态修复
- Java并发编程之volatile关键字
- leetcode的注意点
- flask_admin 笔记五 内置模板设置
- Android6.0------权限申请管理(单个权限和多个权限申请)
- js 字符串和数组注意点
- c++封装继承多态
热门文章
- 按键精灵PC端脚本
- php+tcpdf如何把生成的pdf文件保存在服务端
- The BEST way for YOU to learn English,https://www.youtube.com/watch?v=508wFMG9ZP4
- BZOJ 4764: 弹飞大爷 LCT
- Switch ……case语句
- TODO list(咕咕咕。。。
- mysql 修改字段名称以及长度
- mysql 组合聚集函数
- iostat参数说明
- leetcode 10. Regular Expression Matching 、44. Wildcard Matching