PHP设计模式:原型模式
sdfasd
<?php/***原型模式(深拷贝+浅拷贝)*/declare(strict_types=1);//开启强类型模式classCopyObj{public$array;}//抽象原型类abstractclassPrototype{protected$attach;publicfunction__construct(CopyObj$obj){$this->attach=$obj;}publicfunctionset($name,$value){$this->$name=$value;}publicfunctionget($name){return$this->$name;}publicfunctiongetAttach(){return$this->attach;}abstractpublicfunctionclone();}classDeepCopyextendsPrototype{publicfunctionclone(){$obj=clone$this;return$obj;}}classShallowCopyextendsPrototype{publicfunctionclone(){$serializeObj=serialize($this);$obj=unserialize($serializeObj);return$obj;}}
123
123
//----------深拷贝--------------$chairman=newCopyObj();$chairman->array=['×××','×××','江泽明'];$deepCopyObj1=newDeepCopy($chairman);$deepCopyObj2=$deepCopyObj1->clone();echo"<pre>";var_dump($deepCopyObj1->getAttach());var_dump($deepCopyObj2->getAttach());//修改对象$chairman->array=['×××','×××'];var_dump($deepCopyObj1->getAttach());var_dump($deepCopyObj2->getAttach());
asdsad
//-------------浅拷贝-------------$start=newCopyObj();$start->array=['刘德华','张学友','郭富城','黎明'];$deepCopyObj3=newShallowCopy($start);$deepCopyObj4=$deepCopyObj3->clone();var_dump($deepCopyObj3->getAttach());var_dump($deepCopyObj4->getAttach());//修改对象$start->array=['周杰伦'];var_dump($deepCopyObj3->getAttach());var_dump($deepCopyObj4->getAttach());
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。