久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      php中的單例模式

      1.單例模式的由來

      是對現(xiàn)實生活中一類具有共同特征的事物的抽象,通過類的實例化,產(chǎn)生了許多的對象,但同時也產(chǎn)生了大量資源的消耗(例如在連接數(shù)據(jù)庫時連接數(shù)量的限制,又例如在計算機(jī)中打開資源管理器卻具有唯一性),由此也產(chǎn)生了對類的實例化進(jìn)行了限定的需求,為了保護(hù)資源的唯一性,由此產(chǎn)生了單例模式

      2.單例模式的定義

      定義:單例模式singleton,是一種類的設(shè)計只會最多產(chǎn)生一個對象的設(shè)計思想。

      3.單例模式的實例

      a.創(chuàng)建一個空類 。

      <?php    class Use{    }    $a=new Use();//實例化一個對象 ?>

      b.能夠多次實例化類,是產(chǎn)生多個對象的原因,所以可以通過私有化構(gòu)造方法。

      <?php   class Use{     private function __construct()     {       echo __FUNCTION__."<br>";     }    } ?>

      c.私有化構(gòu)造方法使得實例化對象產(chǎn)生的數(shù)目為0,由此可以通過在類的內(nèi)部,通過靜態(tài)方法調(diào)用構(gòu)造方法,然后將構(gòu)造方法返回至外部。

      <?php   class Use{     private function __construct()     {      echo __FUNCTION__."<br>";     }     public static function getInstance()     {       return new self();         }    }   $s1=Use::getSingleton(); ?>

      d.通過上述的方法雖然能夠?qū)嵗瘜ο螅峭瑫r也將構(gòu)造方法的使用權(quán)限外放出去。如果想要該方法只返回一個對象,就得保證類內(nèi)部有辦法存著某個產(chǎn)生的對象,第一次產(chǎn)生新的,后面返回舊的。此時需要使用靜態(tài)屬性。

      <?php   class Use{     private static $object = NULL;//初始化為NULL,沒有對象           private function __construct()     {       echo __FUNCTION__."<br>";     }          public static function getInstance()     {         //判斷類內(nèi)部的靜態(tài)屬性是否存在對象        if(!(self::$object instanceof self)){   //當(dāng)前保存的內(nèi)容不是當(dāng)前類的對象        self::$object = new self();     }       //返回對象給外部        return self::$object;     }    }   $s1=Use::getSingleton(); ?>

      e.此時可以保證,通過調(diào)用靜態(tài)方法只得到一個對象。但是依舊可以通過克隆,不停的實例化新的對象,所以可以將克隆私有化。

      <?php   class Use{     private static $object = NULL;//初始化為NULL,沒有對象           private function __construct()     {       echo __FUNCTION__."<br>";     }          public static function getInstance()     {         //判斷類內(nèi)部的靜態(tài)屬性是否存在對象        if(!(self::$object instanceof self)){   //當(dāng)前保存的內(nèi)容不是當(dāng)前類的對象            self::$object = new self();        }       //返回對象給外部        return self::$object;     }               private function __clone(){}       }   $s1=Use::getSingleton(); ?>

      推薦:php教程

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號