PHP设计模式系列(八):建造者模式
来源:互联网 发布:中国经济数据统计网 编辑:程序博客网 时间:2024/05/23 18:03
建造者模式
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。
模式结构
建造者模式包含如下角色:
- Builder:抽象建造者
- ConcreteBuilder:具体建造者
- Director:指挥者
- Product:产品角色
结构图
PHP代码实现
<?php/** * 建造者模式 *///Product:产品角色class Product{ public function Add($part){ $this->parts[]=$part; } public function show(){ var_dump('产品创建'); foreach ($this->parts as $part){ var_dump($part); } }}//Builder:抽象建造者interface Builder{ public function BuildPartA(); public function BuildPartB(); public function GetResult();}//ConcreteBuilder:具体建造者class ConcreteBuilder1 implements Builder{ public function __construct(){ $this->product=new Product(); } public function BuildPartA() { $this->product->Add('部件A'); } public function BuildPartB() { $this->product->Add('部件B'); } public function GetResult() { return $this->product; }}class ConcreteBuilder2 implements Builder{ public function __construct(){ $this->product=new Product(); } public function BuildPartA() { $this->product->Add('部件X'); } public function BuildPartB() { $this->product->Add('部件Y'); } public function GetResult() { return $this->product; }}//Director:指挥者class Director{ public function Construct($builder){ $builder->BuildPartA(); $builder->BuildPartB(); }}$a=new Director();$b1=new ConcreteBuilder1();$b2=new ConcreteBuilder2();$a->Construct($b1);$p1=$b1->GetResult();$p1->show();$a->Construct($b2);$p2=$b2->GetResult();$p2->show();
运行结果
string '产品创建' (length=12)string '部件A' (length=7)string '部件B' (length=7)string '产品创建' (length=12)string '部件X' (length=7)string '部件Y' (length=7)
0 0
- PHP设计模式系列(八):建造者模式
- PHP设计模式系列 - 建造者模式
- PHP设计模式系列 - 建造者模式
- PHP设计模式系列 - 建造者模式
- php设计模式学习系列(六)--建造者模式
- 设计模式之八 建造者模式
- PHP设计模式-建造者模式(Builder For PHP)
- 设计模式系列5-建造者模式
- JAVA系列-设计模式-建造者模式
- 炒冷饭系列:设计模式 建造者模式
- 设计模式系列之 建造者模式
- 设计模式系列:建造者模式
- 设计模式系列之建造者模式
- PHP设计模式之:建造者模式
- 设计模式系列学习三:建造者模式(Builder)
- C#设计模式系列:建造者模式(Builder)
- 设计模式系列(四)建造者模式Builder
- Java/Android 设计模式系列(10)--建造者模式
- Searching and Sorting
- 199. Binary Tree Right Side View
- 斯坦福机器学习笔记四
- Linux必学的60个命令(自己文档备份)
- Java for Web学习笔记(五七):Spring框架简介(6)代码设置
- PHP设计模式系列(八):建造者模式
- CSS层叠样式表重点整理
- 算法导论复习(3) 堆排序
- linux搭建SSR
- Hibernate知识整理4---关系映射及持久化对象
- 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
- HDU
- ubuntu下安装配置nodejs
- 朴素贝叶斯的简单应用