Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Codebeispiele für PHP-Builder-Muster

Detaillierte Erläuterung der Codebeispiele für PHP-Builder-Muster

黄舟
黄舟Original
2017-03-16 09:18:261825Durchsuche

PHPBuilder-ModusDetaillierte Codebeispiele

<?php
// 建造者模式

class Product
{
	private $size;
	private $color;
	private $type;

	public function setSize($size) {
		$this->size = $size;
	}

	public function setColor($color) {
		$this->color = $color;
	}

	public function setType($type) {
		$this->type = $type;
	}

	public function toString() {
		ob_start();
		echo &#39;Size: &#39;, $this->size , &#39;<br/>&#39;;
		echo &#39;Color: &#39;, $this->color , &#39;<br/>&#39;;
		echo &#39;Type: &#39;, $this->type , &#39;<br/>&#39;;
		return ob_get_clean();
	}
}

// 分别调用每个方法并不是最佳的做法
$product = new Product();

$product->setSize(100);
$product->setColor(&#39;red&#39;);
$product->setType(&#39;shirt&#39;);
// echo $product;

// -----------------------------------------------------------

/**
 * 建造者模式
 * 将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示
 */
class ProductBuilder
{
	private $product;
	private $configs;

	public function construct($cfgs) {
		$this->configs = $cfgs;
		$this->product = new Product();
	}

	/**
	 * 构建对象
	 */
	public function buildProduct() {
		$this->product->setSize($this->configs[&#39;size&#39;]);
		$this->product->setColor($this->configs[&#39;color&#39;]);
		$this->product->setType($this->configs[&#39;type&#39;]);
	}

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

$cfgs = array(&#39;size&#39;=>100,&#39;color&#39;=>&#39;blue&#39;,&#39;type&#39;=>&#39;shirt&#39;);
$builder = new ProductBuilder($cfgs);
$builder->buildProduct();
echo $builder->getProduct();

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Codebeispiele für PHP-Builder-Muster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn