成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP設(shè)計模式(四)單例模式(Singleton)

余學(xué)文 / 1566人閱讀

摘要:一什么是單例設(shè)計模式單例模式,也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。

一、什么是單例設(shè)計模式

單例模式,也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。

二、單例模式的技巧

利用$_instance私有變量來保存類的唯一實例化對象;

設(shè)計一個getInstance對外公開的函數(shù),可以獲取類唯一實例;

防止用戶用new實例化,和克隆,構(gòu)造兩個__construct、__clone私有函數(shù);

三、單例模式的應(yīng)用場景

  數(shù)據(jù)庫設(shè)計,我們發(fā)送一次請求,可能會需要訪問不同的表,那么如果每次訪問都 new 一個實例,那必然會造成資源的浪費,所以使用單例模式,可以很好的節(jié)省資源。

單例類
class DataBase
{
    /**
     * 靜態(tài)成品變量,保存全局實例
     */
    private static $_instance = null;

    /**
     *  測試變量,存儲日志信息
     */
    private static $_msg = null;

    /**
     * 私有構(gòu)造方法,防止外界實例化對象
     */
    private function __construct()
    {
        $connect = "連接數(shù)據(jù)庫操作";
    }

    /**
     * 私有化克隆方法,防止外鍵克隆對象
     */
    private function __clone()
    {
    }

    /**
     * 靜態(tài)方法,外界獲取實例的唯一接口
     * @return Object 返回對象唯一實例
     */
    public static function getInstance()
    {
        if (!self::$_instance){
            self::$_instance = new DataBase();
            self::$_msg = "這是一個新對象" . "
"; }else{ self::$_msg = "這個是一個舊的對象" . "
"; } return self::$_instance; } public function log() { echo self::$_msg; } }
客戶端測試代碼
    $dbA = DataBase::getInstance();
    $dbA->log();

    $dbB = DataBase::getInstance();
    $dbB->log();

    $dbC = DataBase::getInstance();
    $dbC->log();
輸出結(jié)果:

這是一個新對象

這個是一個舊的對象

這個是一個舊的對象

“對象”?,程序員怎么可能有對象!~

參考 系列源地址

WilburXu/design_pattern

系列目錄

PHP 設(shè)計模式概述

PHP設(shè)計模式(一)簡單工廠模式 (Simple Factory For PHP)

PHP設(shè)計模式(二)工廠方法模式(Factory Method)

PHP設(shè)計模式(三)抽象工廠模式(Abstract Factory)

PHP設(shè)計模式(四)單例模式(Singleton)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29503.html

相關(guān)文章

  • php設(shè)計模式之實現(xiàn)單例模式(singleton)

    摘要:單例模式用于為一個類生成一個唯一的對象。作為對象的創(chuàng)建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例,這個類稱為單例類。 單例模式(Singleton):用于為一個類生成一個唯一的對象。最常用的地方是數(shù)據(jù)庫連接。 使用單例模式生成一個對象后,該對象可以被其它眾多對象所使用。 作為對象的創(chuàng)建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系...

    garfileo 評論0 收藏0
  • PHP 設(shè)計模式概述

    摘要:創(chuàng)建型模式主要有以下五種簡單工廠模式和工廠方法模式抽象工廠模式單例模式建造者模式原型模式在設(shè)計模式一書中將工廠模式分為兩類工廠方法模式與抽象工廠模式。 一、 設(shè)計模式(Design pattern)是什么 設(shè)計模式是一套被反復(fù)使用、多數(shù)人知曉、經(jīng)過分類編目的代碼設(shè)計的經(jīng)驗總結(jié)。使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 二、 為什么會有設(shè)計模式 在軟件開發(fā)過...

    IntMain 評論0 收藏0
  • PHP設(shè)計模式-Singleton 單例(單元素)模式

    摘要:大佬看完如果發(fā)現(xiàn)鄙人理解有誤請立即指出,感謝拍磚,跪求鞭打單例單元素模式實現(xiàn)來自說明通過提供對自身共享實例對訪問,單元素單例設(shè)計模式用于限制特定對象只能被創(chuàng)建一次。 整理一下自己的學(xué)習(xí)Aaron Saray 寫的PHP設(shè)計模式一些demo和自己的理解。大佬看完如果發(fā)現(xiàn)鄙人理解有誤請立即指出,感謝拍磚,跪求鞭打 /** * Singleton 單例(單元素)模式實現(xiàn) * -----...

    omgdog 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<