国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP設(shè)計(jì)模式之:原型模式學(xué)習(xí)筆記

2024-05-04 21:49:57
字體:
供稿:網(wǎng)友

原型模式和其它的模式相對(duì)有一些不同之處了,這個(gè)也是當(dāng)然了所有的設(shè)計(jì)模式中的各種模式都有自己的特色了,下面一起來看看。

原型模式其實(shí)和工廠模式比較類似,都是用來創(chuàng)建對(duì)象的,只不過與工廠模式的實(shí)現(xiàn)不同。原型模式是先創(chuàng)建好一個(gè)原型對(duì)象,然后通過clone原型對(duì)象來創(chuàng)建新的對(duì)象。這樣就免去了類創(chuàng)建時(shí)重復(fù)的初始化操作了。原型模式適用于大對(duì)象的創(chuàng)建,因?yàn)樵趧?chuàng)建一個(gè)大對(duì)象時(shí),需要很大的開銷。如果每次都去new就會(huì)消耗很大,原型模式僅需從內(nèi)存拷貝既可。

還是繼續(xù)通過實(shí)例來向大家演示一下:

  1. <?php 
  2. /** 
  3.  * 抽象原型角色 
  4.  */ 
  5. interface Prototype { 
  6.     public function clone_obj(); 
  7. /** 
  8.  * 具體原型角色 
  9.  */ 
  10. class Concrete implements Prototype{ 
  11.   
  12.     private $data
  13.   
  14.     public function __construct($data) { 
  15.         $this->data = $data
  16.     } 
  17.     public function get_data() { 
  18.         return $this->data; 
  19.     } 
  20.   
  21.     public function clone_obj() { 
  22.         /* 
  23.          * 深拷貝實(shí)現(xiàn) 
  24.          */ 
  25.         /*$serialize_obj = serialize($this); // 序列化 
  26.         $clone_obj = unserialize($serialize_obj); // 反序列化 
  27.         return $clone_obj;*/ 
  28.   
  29.         return clone $this// 淺拷貝 
  30.     } 
  31. /** 
  32.  * 測(cè)試深拷貝用的引用類 
  33.  */ 
  34. class Demo { 
  35.     public $arr
  36. $demo = new Demo(); 
  37. $demo->arr = array(1, 2); 
  38. $concrete = new Concrete($demo); 
  39. $object1 = $concrete->clone_obj(); 
  40. var_dump($concrete->get_data()); 
  41. echo '<br />'
  42. var_dump($object1->get_data()); 
  43. echo '<br />';  //Vevb.com 
  44. //測(cè)試深拷貝 
  45. $demo->arr = array(3, 4); 
  46. var_dump($concrete->get_data()); 
  47. echo '<br />'
  48. var_dump($object1->get_data()); 
  49. echo '<br />'
  50. ?> 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湛江市| 尉犁县| 武安市| 寻乌县| 淮南市| 项城市| 河曲县| 东山县| 罗江县| 旌德县| 呼玛县| 保靖县| 万安县| 泰兴市| 安陆市| 凤山县| 永昌县| 收藏| 苍南县| 东至县| 青海省| 偏关县| 忻州市| 房山区| 巫山县| 佳木斯市| 丽江市| 宜春市| 汾阳市| 长顺县| 绥棱县| 绥德县| 孝义市| 乌拉特前旗| 甘孜县| 濮阳县| 吐鲁番市| 惠来县| 石柱| 九寨沟县| 濮阳县|