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

<?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);

?>
时间: 02-17

设计模式之创建型模式—— 1.6 建造者模式的相关文章

设计模式3 创建型模型

设计模式3 创建型模型 目录: 简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 简单工厂 模型 [email protected]:~$ cat main.cpp  //设计模式:简单工厂 模型 #include<iostream> using namespace std; class Fruit { public: Fruit(string kind) { this->kind = kind; if(kind == "apple") {} else if (ki

设计模式(五) : 创建型模式--建造者模式

建造者模式的意图是将产品的内部表象和产品的生产过程分割开来. 类图: 示意性代码: package com.javadesignpattern.builder; public interface Builder { public void buildPart1(); public void buildPart2(); public Product retrieveProduct(); } ? 1 2 3 4 5 6 7 package com.javadesignpattern.builder;

设计模式之创建型模式(上)

没有总结的学习不算学习,这一个月的学习可谓收获多多啊,接下来与大家分享一下. 一.设计模式的分类 总体来说设计模式分为三大类: 1.创建型模式,共五种. 2.结构型模式,共七种. 3.行为型模式,共十一种. 首先研究创建型模式 二. 概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独 立于如何创建.组合和表示它的那些对象. 三. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律: 第一,它们都将系统使用哪些具体类的信息封装起来: 第二,它们隐藏了这些类的实例

java设计模式-创建型

1.设计模式介绍 1.1 设计模式的概念 1.设计模式是一套被反复使用,多数人知晓,经过分类编码目的的优秀代码设计经验的总结. 2.设计模式贯彻的原理:面向接口编程,而不是面向对象实现. 3.设计模式的目标:降低耦合性,增强灵活性. 1.2 设计模式的要素 1.模式名称 2.问题 3.环境与初始环境 4.解决方案 5.效果 6.举例 7.末态环境 8.推理 9.其他有关模式 10.已知的应用 1.3设计模式的分类 1.创建型 1.1  单例模式 1.2  工厂模式 1.3  抽象工厂模式 1.4

设计模式之创建型模式—— 1.5 原型模式

<?php /**  * 1.5 原型模式  *  解决的问题:  *  某些结构复杂的对象的创建工作,由于需  *  求的变化,这些对象经常面临着剧烈的变  *  化,但是它们却有用比较稳定一种的接口.  *  解决的方案:  *   用原型实例指定创建对象的种类,并且通  *   过拷贝这些原型创建新的对象.  *  该模式无需任何角色:  *   因为在PHP中,在每个声明的类中已经默认  *   包含了克隆函数,所以无需单独在建立一个  *   抽象类来实现克隆操作了.  *  优点:

【设计模式】创建型模式之抽象工厂Abstract Factory

抽象工厂Abstract Factory是一种创建型设计模式,目的在于提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.抽象工厂的类图如下,客户仅与抽象类定义的定义的接口交互,而不使用特定的具体类的接口.一个系统包含多种产品时,AbstractFactory声明创建各种抽象产品对象的操作接口,这些接口是直接暴露给Client的,而具体产品对象的创建则延迟到子类ConcreteFactory,Client面对的产品类是AbstractProduct,无需关系具体产品类是什么.在运

关于设计模式的创建型、结构型和行为型

设计模式主要分三个类型:创建型.结构型和行为型. 其中创建型有:一.Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点二.Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类.三.Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类.四.Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的

精通JavaScript--05设计模式:创建型

使用设计模式的要诀时把它们看作你编程工具箱中的多种工具,每一种都有一个特定的用途.在尝试应用设计模式至代码之前,你首先要熟悉各种现有的设计模式以及每一种所应用的场合(应用了错误的工具将导致不必要的麻烦和时间的浪费).这些章节将帮助你来实现这一点.除非你是一个特别老练的JavaScript开发者,不然,在你开始为应用程序编写代码时头脑是没有特定的设计模式的.随着代码的不断积累,你将发现需要对代码进行改变以使日后的开发更易于管理,同时还要对代码库中的文件按照一定的结构和规律进行管理.此过程通常称为"

设计模式那点事读书笔记(3)----建造者模式

建造者模式: 建造者模式是将复杂的对象构造进行分离,使得每个部件完成比较独立的工作.通过抽象类,接口来约束建造的过程. 解决什么问题: 当生成的产品对象内部具有复杂的结构. 当复杂对象需要与表示分离,可能需要创建不同的表示时. 当需要向客户隐藏产品内部结构表现时. UML: 代码结构: 商品的实体: package com.demo.builder.model; /** * 产品实体 */ public class MobilePackage { private float money; pri