最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析PHP工廠模式的好處

 更新時間:2013年06月18日 16:25:44   作者:  
本篇文章是對PHP工廠模式的好處進行了詳細(xì)的分析介紹,需要的朋友參考下
顧名思義,工廠是可以加工零件的,PHP程序中的工廠模式也有相同的功能,可以方便的使用一個靜態(tài)的工廠方法來實例化某一個類,那么這樣做的好處是什么呢?初學(xué)PHP的設(shè)計模式,以下是我個人的理解
一般我們實例化一個類會給它一些參數(shù)以便在其構(gòu)析的時候可以根據(jù)不同的參數(shù)反饋出我們需要的結(jié)果。
舉例說明,以下是一個User類,非常簡單:
復(fù)制代碼 代碼如下:

<?php
interface IUser{
   function getName();
   function getAge();
}
class User implements IUser{
   protected $_name;
   protected $_age;
   function __construct($name, $age){
      $this->_name = $name;
      $this->_age = (int)$age;
   }
   function getName(){
      return $this->_name;
   }
  function getAge(){
      return $this->_age;
   }
}
?>

我們?nèi)绻獙嵗@個類就要這樣:
$u = new User(‘小明‘,19);
一般如果這個類很少使用,那么這樣做沒什么太大影響,也非常好。
突然我想給這個類增加一個歸類,把小明放入學(xué)生組,修改下類代碼實現(xiàn)非常容易,但如果這個類在我們想修改之前在很多文件地方多次的實例化了,那么想為其增加一個參數(shù)就會變的非常煩瑣,因為需要替換成:
$u = new User(‘小明‘,19,‘學(xué)生‘);
當(dāng)然我們也可以通過在__construct函數(shù)中進行默認(rèn)值設(shè)置來避免這種重復(fù)勞動,但事實上從代碼優(yōu)雅角度來說這樣很不好,設(shè)想我們有一個工廠方法可以通過一個標(biāo)識來對應(yīng)一組參數(shù),并把這個參數(shù)存放在某個文本文檔或是直接以數(shù)組的形式存放在工廠類中,我們在調(diào)用User類的時候就會變的輕松許多,即便是需要增減參數(shù)屬性也不需要到處進行代碼的替換,下面就是一個工廠類(也可以直接將方法存放在User類)
復(fù)制代碼 代碼如下:

interface IUser{
    function getName();
    function getAge();
}
class User implements IUser{
   protected $_group;
   protected $_name;
   protected $_age;
  function __construct($name, $age, $group){
      $this->_group = $group;
      $this->_name = $name;
      $this->_age = (int)$age;
  }
  function getName(){
     return $this->_name;
  }
  function getAge(){
      return $this->_age;
  }
}
class Fuser{
   private static $group = array(
       array(‘小明‘,19,‘學(xué)生‘),
       array(‘小王‘,19,‘學(xué)生‘)
   );
   static function create($id){
      list($name, $age, $group) = self::$group[(int)$id];
      return new User($name, $age, $group);
   }
}
echo Fuser::create(0)->getName();

得到的結(jié)果應(yīng)該是輸出“小明”。

相關(guān)文章

  • PHP單態(tài)模式簡單用法示例

    PHP單態(tài)模式簡單用法示例

    這篇文章主要介紹了PHP單態(tài)模式簡單用法,結(jié)合實例形式分析了php單態(tài)模式的定義與相關(guān)使用技巧,需要的朋友可以參考下
    2016-11-11
  • php 無限級分類 獲取頂級分類ID

    php 無限級分類 獲取頂級分類ID

    這篇文章主要介紹了php 無限級分類 獲取頂級分類ID的相關(guān)代碼,需要的朋友可以參考下
    2016-03-03
  • PHP?redis?Sorted?Set實現(xiàn)字符串去重代碼示例

    PHP?redis?Sorted?Set實現(xiàn)字符串去重代碼示例

    Redis中的Sorted?Set數(shù)據(jù)結(jié)構(gòu)可以用來存儲有序的唯一值,它們可以被用來構(gòu)建有序的集合或者有權(quán)重的數(shù)據(jù)結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于PHP?redis?Sorted?Set實現(xiàn)字符串去重的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • PHP基于openssl實現(xiàn)非對稱加密代碼實例

    PHP基于openssl實現(xiàn)非對稱加密代碼實例

    這篇文章主要介紹了PHP基于openssl實現(xiàn)非對稱加密代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Java中final關(guān)鍵字詳解

    Java中final關(guān)鍵字詳解

    這篇文章主要介紹了final關(guān)鍵字,通過final關(guān)鍵字的基本用法和對final關(guān)鍵字的理解展開,有需要的朋友可以參考下
    2015-08-08
  • PHP中strtr與str_replace函數(shù)運行性能簡單測試示例

    PHP中strtr與str_replace函數(shù)運行性能簡單測試示例

    這篇文章主要介紹了PHP中strtr與str_replace函數(shù)運行性能簡單測試,結(jié)合具體實例形式對比分析了PHP中strtr與str_replace函數(shù)的測試運行效率,需要的朋友可以參考下
    2019-06-06
  • PHP取進制余數(shù)函數(shù)代碼

    PHP取進制余數(shù)函數(shù)代碼

    我想知道21712341byte在K位上是多少,M位上、G位呢?這相當(dāng)于進制轉(zhuǎn)換的問題。只不過現(xiàn)在要轉(zhuǎn)換的進制是1024
    2012-01-01
  • php 圖像函數(shù)大舉例(非原創(chuàng))

    php 圖像函數(shù)大舉例(非原創(chuàng))

    PHP自4.3版本開始,捆綁了自己的GD2庫,用戶可以自己下載并設(shè)置.如果要查看自己的php版本是否支持gd模塊(支持JPEG,PNG,WBMP但不再支持GIF)
    2009-06-06
  • phpcms的分類名稱和類別名稱的調(diào)用

    phpcms的分類名稱和類別名稱的調(diào)用

    本文主要介紹了phpcms的分類名稱和類別名稱的調(diào)用。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • php base64 編碼與解碼實例代碼

    php base64 編碼與解碼實例代碼

    這篇文章主要介紹了php base64 編碼與解碼實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論

响水县| 布拖县| 商南县| 天长市| 蕲春县| 桃园市| 公安县| 东方市| 仪陇县| 阜城县| 阿鲁科尔沁旗| 永和县| 富川| 湘西| 朔州市| 毕节市| 商洛市| 桃江县| 阜宁县| 南宁市| 固始县| 深圳市| 沾益县| 邵东县| 桂林市| 静宁县| 郸城县| 岢岚县| 黎平县| 寻乌县| 赤水市| 梅河口市| 广宗县| 溧水县| 鹿泉市| 丹巴县| 仁怀市| 大城县| 西昌市| 丰原市| 古蔺县|