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

<?php

	/**
	 * 1.5 原型模式
	 * 	解决的问题:
	 * 		某些结构复杂的对象的创建工作,由于需
	 * 		求的变化,这些对象经常面临着剧烈的变
	 * 		化,但是它们却有用比较稳定一种的接口。
	 *  解决的方案:
	 *  	用原型实例指定创建对象的种类,并且通
	 *  	过拷贝这些原型创建新的对象。
	 *  该模式无需任何角色:
	 *  	因为在PHP中,在每个声明的类中已经默认
	 *  	包含了克隆函数,所以无需单独在建立一个
	 *  	抽象类来实现克隆操作了。
	 *  优点:
	 *  	1. 简化某些比较复杂对象的创建工作,同时
	 *  	   也可以提高效率;
	 *  	2. 原型模式提供了简化的创建结构.
	 *  缺点:
	 *  使用场景:
	 *  	1. 当要实例化的类是在运行时刻指定时
	 *  	   ,例如,通过动态装载。
	 *  	2. 为了避免创建一个与产品类层次平行
	 *  	   的工厂类层次时。
	 *  	3. 当一个类的实例只能有几个不同状态
	 *  	   组合中的一种时,建立相应数目的原
	 *  	   型并克隆它们可能比每次用合适的状
	 *  	   态实例化该类更方便一些。
	 */

	class Person{
		private $name;
		private $age;
		private $sex;
		public function __construct($name,$age,$sex){
			$this->name=$name;
			$this->age=$age;
			$this->sex=$sex;
		}

		public function getInfo(){
			return $this->name.‘ ‘.$this->age.‘ ‘.$this->sex;
		}
	}

	//客户端
	$p1=new Person(‘Jack‘,‘20‘,‘male‘);
	$p2=clone $p1;
	echo $p1->getInfo();
?>
时间: 02-17

设计模式之创建型模式—— 1.5 原型模式的相关文章

设计模式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

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

没有总结的学习不算学习,这一个月的学习可谓收获多多啊,接下来与大家分享一下. 一.设计模式的分类 总体来说设计模式分为三大类: 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

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

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

(创建型模式五)原型模式

package com.eyugame.modle; /*原型类*/ public abstract class Prototype implements Cloneable { private int x; private int y; /*复制*/ public Prototype clone() { Prototype prototype = null; try { prototype = (Prototype) super.clone(); } catch (CloneNotSuppor

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

<?php /**  * 1.6 建造者模式  * 定义:  *  将一个复杂对象的构建与它的表示分离  *  ,使得同样的构建过程可以创建不同的  *  表示.  * 此模式包含三种角色:  *  1. 抽象建造者角色  *  职责:  *  用于指定规则和流程  *  2. 具体建造者角色  *  职责:  *  具体的建造过程  *  3. 指挥者角色  *  职责:  *  用于指挥建造过程  *      4. 具体产品角色  *  * 优点:  *  1. 封装性  *  2. 建造

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

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

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

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

设计模式学习总结:(8)原型模式

原型(prototype)模式和工厂方法模式很像,也是为了在对象创建的时候更加灵活.但是,不同的地方是,原型模式是工厂和相应类对象的结合体,通过在类中定义一个clone方法用来克隆自己,这样的类也被称为原型.对比工厂方法,可以想到有这样的好处,省略了工厂类的定义实现,简化了创建实例的过程,因为只要复制构造就行了.当然,缺点也是有的,把clone的职责给了原型类,实际上也是增加了类的职责, 意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 通过已有对象来创建新的对象是它的特点