<?php
/**
原型模式
*/
/**
定义:原型模式使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。
属性:原型模式属于对象创建型模式。
*/
//抽象原型类
interface Prototype{
public function shanllowCopy();
public function deepCopy();
}
//具体类
class ConcretePrototype implements Prototype{
public $name = 'yy';
private $attachment = null;
//浅拷贝
public function shanllowCopy(){
return clone $this;
}
//深拷贝
public function deepCopy(){
$serialize_obj = serialize($this);
$clone_obj = unserialize($serialize_obj);
return $clone_obj;
}
public function setAttachment($attachment)
{
$this->attachment=$attachment;
}
}
//引用类
class Attachment
{
public $string;
public function setName($str){
$this->string = $str;
}
}
//客户端
/*
//创建原型对象
$obj = new ConcretePrototype();
//$obj->name = 'mumu';
//引用类
$attachment = new Attachment();
$attachment->string= 'dsfvd';
$obj->setAttachment($attachment);
//浅拷贝
$shanllow_obj = $obj->shanllowCopy();
//深拷贝
$deep_obj = $obj->deepCopy();
var_dump($obj);
var_dump($shanllow_obj);
var_dump($deep_obj);
var_dump($shanllow_obj ==$obj);
var_dump($obj ==$deep_obj);
$obj->name = 'mumu';
echo 'shanllow_obj->name:',$shanllow_obj->name,'<br />';
echo 'deep_obj->name:',$deep_obj->name,'<br />';
*/
?>
【PHP】原型模式
于 2018-03-12 14:57:43 首次发布