设计模式PHP5实现之----生成器(Builder)

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

<?php

/*

* 生成器模式

*

* 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.

* 为了将构建复杂对象的过程和它的部件解耦,非常类似抽象工厂模式

*

* @author doodoo<pwtitle@gmail.com>

*/

/**

* 生成器,说明如何装配

*

* @author doodoo<pwtitle@gmail.com>

*/

interface Builder{

/*

* 创建A部分,比如一部汽车的方向盘

*/

public function buildPartA();

/**

* 创建B部分,比如汽车的车轮

*/

public function buildPartB();

/**

* 创建C部分,比如汽车的发动机

*/

public function buildPartC();

/**

* 得到产品,即汽车

*/

public function getProduct();

}

/**

* 具体如何装配?具体对象

*/

class ConcreteBuilder implements Builder {

public function __construct(){

// do something

}

public function buildPartA(){

//do something...

}

public function buildPartB(){

//do something...

}

public function buildPartC(){

//do something...

}

public function getProduct(){

// 返回成品结果

}

}

/**

* 装配工

*

* 负责将装配完成,装配工知道该如何装配

*

* @author doodoo<pwtitle@gmail.com>

*/

class Director{

private $builder = null;

public function __construct(Builder $builder){

$this->builder = $builder;

}

/**

* 进行装配

*/

public function construct(){

$this->builder->buildPartA();

$this->builder->buildPartB();

$this->builder->buildPartC();

}

}

/**

* 复杂对象

*/

interface Product{ }

// test

$builder = new ConcreteBuilder();

$director = new Director($builder);

// 对象被装配起来了。

$director->construct();

$product = $builder->getProduct();

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航