<?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();
?>本文出自 “一切皆有可能” 博客,请务必保留此出处http://noican.blog.51cto.com/4081966/1614772
原文:http://noican.blog.51cto.com/4081966/1614772