注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lamp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

builder建造者模式  

2018-03-12 14:21:36|  分类: 设计模式--php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


<?php

/**
* builder建造者模式

* 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
*/
//Product类
class Person
{
private $parts = array();

public function Add($part)
{
array_push($this->parts, $part);
}

public function Show()
{
foreach ($this->parts as $k => $v) {
echo $v, '<br/>';
}
}
}


//抽象builder类
abstract class Builder
{
protected $person;

public function __construct()
{
$this->product = new Person();
}

abstract public function buildHead();

abstract public function buildBody();

abstract public function buildHand();

abstract public function buildFeet();

abstract public function getResult();
}

//具体胖人创建类
class FatPersonBuilder extends Builder
{

public function buildHead()
{
$this->product->Add('大头');
}

public function buildBody()
{
$this->product->Add('大身体');
}

public function buildHand()
{
$this->product->Add('大手');
}

public function buildFeet()
{
$this->product->Add('大脚');
}

public function getResult()
{
return $this->product;
}
}

//具体瘦人创建类
class ThinPersonBuilder extends Builder
{

public function buildHead()
{
$this->product->Add('小头');
}

public function buildBody()
{
$this->product->Add('小身体');
}

public function buildHand()
{
$this->product->Add('小手');
}

public function buildFeet()
{
$this->product->Add('小脚');
}

public function getResult()
{
return $this->product;
}
}


//Director类
class Director
{
public function __construct(Builder &$builder)
{
$builder->BuildHead();
$builder->BuildBody();
$builder->BuildHand();
$builder->BuildFeet();
}
}


//客户端

//构造胖人
echo '我是胖子......','<br/>';
$b1 = new FatPersonBuilder();
$director = new Director($b1);
$product = $b1->GetResult();
$product ->Show();
//构造瘦人
echo '我是瘦子......','<br/>';
$b2 = new ThinPersonBuilder();
$director = new Director($b2);
$product = $b2->GetResult();
$product ->Show();




  评论这张
 
阅读(10)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018