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

首頁 > 語言 > PHP > 正文

php Prototype原型模式學(xué)習(xí)筆記

2024-09-04 11:43:40
字體:
供稿:網(wǎng)友

我們一般用new來新增對(duì)象,不過很多時(shí)候新增一個(gè)對(duì)象需要一些工作,而星際里面往往會(huì)新增某些類的大量的對(duì)象,比如新增很多機(jī)槍兵和龍騎.

待解決的問題:我們能否減少new的使用,同時(shí)避免需要新增對(duì)象的時(shí)候,了解對(duì)象的類名.

思路:php5提供了克隆方法,我們可以新增一個(gè)對(duì)象,然后每次需要新增和她同類的對(duì)象,克隆他就可以了.

原型(Prototype)模式示例,代碼如下:

  1. <?php 
  2.  
  3. //機(jī)兵類 
  4.  
  5. class Marine 
  6.  
  7.  
  8.   //所屬的用戶ID 
  9.  
  10.   public $playerID 
  11.  
  12.   //構(gòu)造函數(shù),參數(shù)為用戶的id 
  13.  
  14.   public function __construct($id
  15.  
  16.   { 
  17.  
  18.   $this->playerID = $id
  19.  
  20.   } 
  21.  
  22.  
  23. //兵種的管理類 
  24.  
  25. class TroopManager 
  26.  
  27.  
  28.   //數(shù)組,用于存放多個(gè)兵種的原型 
  29.  
  30.   public $troopPrototype = array(); 
  31.  
  32.   //增加原型,第一個(gè)參數(shù)為原型的名字,第二個(gè)參數(shù)為原型對(duì)象 
  33.  
  34.   public function addPrototype($name$prototype
  35.  
  36.   { 
  37.  
  38.     $this->troopPrototype[$name] = $prototype
  39.  
  40.   } 
  41.  
  42.   //獲取原型的克隆,也就是替代new的方法,參數(shù)為原型的名字 
  43.  
  44.   public function getPrototype($name
  45.  
  46.   { 
  47.  
  48.     return clone $this->troopPrototype[$name]; 
  49.  
  50.   } 
  51.  
  52.  
  53. //初始化兵種的管理類 
  54.  
  55. $manager = new TroopManager(); 
  56.  
  57. //初始化兩個(gè)屬于不同玩家的機(jī)兵的原型 
  58.  
  59. $m1 = new Marine(1); 
  60.  
  61. $m2 = new Marine(2); 
  62.  
  63. //增加原型,同時(shí)用比較容易記憶的名字來命名原型 
  64.  
  65. $manager->addPrototype('Marine of 1'$m1); 
  66.  
  67. $manager->addPrototype('Marine of 2'$m2); 
  68.  
  69. //當(dāng)需要新增對(duì)象的時(shí)候,我們可以不必知道對(duì)象的類名和初始化的工作 
  70.  
  71. $m3 = $manager->getPrototype('Marine of 1'); 
  72.  
  73. ?> 

用途總結(jié):原型模式可以將新增對(duì)象的工作細(xì)節(jié)封裝.

實(shí)現(xiàn)總結(jié):需要一個(gè)原型管理類,實(shí)現(xiàn)增加和獲取克隆原型的方法,注意這里由于為了簡明,省略了一些東西,實(shí)際上我們可以在克隆方法上做一些改動(dòng),也可以用接口規(guī)范每個(gè)原型類.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 涪陵区| 东乡县| 商城县| 尚义县| 襄城县| 牡丹江市| 柳河县| 孝义市| 双城市| 都江堰市| 耿马| 长葛市| 大方县| 富平县| 基隆市| 洛扎县| 门源| 民县| 读书| 丹寨县| 涟源市| 巴马| 奉新县| 沙湾县| 册亨县| 岳普湖县| 南康市| 平乡县| 白水县| 中江县| 集安市| 台江县| 开远市| 卢湾区| 大新县| 仁布县| 泽州县| 马龙县| 老河口市| 白山市| 五大连池市|