码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之创建型模式—— 1.6 建造者模式

时间:2015-02-17 23:42:02      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:设计模式   建造者模式

<?php
	/**
	 * 1.6 建造者模式
	 * 定义:
	 * 		将一个复杂对象的构建与它的表示分离
	 * 		,使得同样的构建过程可以创建不同的
	 * 		表示。
	 * 此模式包含三种角色:
	 * 		1. 抽象建造者角色
	 * 			职责:
	 * 				用于指定规则和流程
	 * 		2. 具体建造者角色
	 * 			职责:
	 * 				具体的建造过程
	 * 		3. 指挥者角色
	 * 			职责:
	 * 				用于指挥建造过程	
	 *     	4. 具体产品角色
	 *
	 * 优点:
	 * 		1. 封装性
	 * 		2. 建造者独立,容易扩展
	 * 		3. 便于控制细节风险。
	 * 缺点:
	 * 使用场景:
	 * 		1. 相同的方法,不同的执行顺序,产
	 * 		   生不同的事件时;
	 * 		2. 多个部件或零件都可以装配到一个
	 * 		   对象中,但是产生的运行结果又不
	 * 		   相同时;
	 * 	 	3. 产品类非常复杂,或者产品类中的
	 * 	 	   调用属性不同产生了不同的效能时
	 * 	 	
	 * 	 		
	 * 		   
	 * 
	 * 	
	 */

	/**
	 * 抽象建造者角色
	 */
	abstract class PersonBuilder{
		abstract public function  head();
		abstract public function  body();
		abstract public function  handLeft();
		abstract public function  handRight();
		abstract public function  legLeft();
		abstract public function  legRight();
	}

	/**
	 * 具体建造者角色
	 */
	//瘦人的具体构建
	class ThinPerson extends PersonBuilder{
		public function head(){
			echo ‘瘦人的头部构建成功<br/>‘;
		}

		public function body(){
			echo ‘瘦人的躯干构建成功<br/>‘;
		}

		public function handLeft(){
			echo ‘瘦人的左手构建成功<br/>‘;
		}

		public function handRight(){
			echo ‘瘦人的左手构建成功<br/>‘;
		}

		public function legLeft(){
			echo ‘瘦人的左腿构建成功<br/>‘;
		}

		public function legRight(){
			echo ‘瘦人的右腿构建成功<br/>‘;
		}
	}

	/**
	 * 胖人的具体构建
	 */
	class FatPerson extends PersonBuilder{
		public function head(){
			echo ‘胖人的头部构建成功<br/>‘;
		}

		public function body(){
			echo ‘胖人的躯干构建成功<br/>‘;
		}

		public function handLeft(){
			echo ‘胖人的左手构建成功<br/>‘;
		}

		public function handRight(){
			echo ‘胖人的右手构建成功<br/>‘;
		}

		public function legLeft(){
			echo ‘胖人的左腿构建成功<br/>‘;
		}

		public function legRight(){
			echo ‘胖人的右腿构建成功<br/>‘;
		}
	}

	/**
	 * 指挥者角色
	 */
	class Director{
		public function __construct(PersonBuilder $person){
			$person->head();
			$person->body();
			$person->handLeft();
			$person->handRight();
			$person->legLeft();
			$person->legRight();
		}
	}

	//客户端
	$thinPerson=new ThinPerson();
	$fatPerson=new FatPerson();
	$d1=new Director($thinPerson);
	$d2=new Director($fatPerson);



?>


本文出自 “一切皆有可能” 博客,请务必保留此出处http://noican.blog.51cto.com/4081966/1614773

设计模式之创建型模式—— 1.6 建造者模式

标签:设计模式   建造者模式

原文地址:http://noican.blog.51cto.com/4081966/1614773

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!