设计模式之创建型模式―― 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();
?>


你可能感兴趣的:(设计模式,原型模式)