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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

和我一起學(xué)設(shè)計(jì)模式(—)

2019-11-15 01:56:32
字體:
供稿:網(wǎng)友
和我一起學(xué)設(shè)計(jì)模式(—)

  今天我們一起來學(xué)習(xí)單例模式:

首先要弄明白,什么叫單例模式?

    概念: 在任何時候,應(yīng)用程序中都只會有這個類僅有的一個實(shí)例存在。

   單例模式也被認(rèn)為是職責(zé)模式,因?yàn)樗鼘?chuàng)建對象的控制權(quán)委托到一個單一的訪問點(diǎn)上。

其次,這么做的好處在哪?

這可以防止我們?nèi)ゴ蜷_數(shù)據(jù)庫的多個連接或者不必要的使用多余的系統(tǒng)資源。在復(fù)雜的系統(tǒng)中,還可以起到維護(hù)應(yīng)用程序狀態(tài)的作用。

最后:它有哪些典型特征?

1.它至少要有一個構(gòu)造函數(shù),并且被標(biāo)記為私有(PRivate)

2.擁有一個保存類的實(shí)例的靜態(tài)成員變量。

3.擁有一個可以訪問這個實(shí)例的公共的靜態(tài)方法。

和普通類不同的是,單例類不能在其它類中直接實(shí)例化,只能被其自身實(shí)例化。要做到這一點(diǎn),必須要私有化它的構(gòu)造函數(shù),并且防止被克隆。用代碼來實(shí)現(xiàn)一個單例,我們以創(chuàng)建數(shù)據(jù)庫的連接為例:

//get data classclass DB {    private $_db;    private static $_instance;    private function __construct(){        $DSN = '../../content/xxtebook.db';        $this->_db = new PDO('sqlite:'.$DSN);    }    //初始化數(shù)據(jù)庫連接    public static function initDB(){        if(! (self::$_instance instanceof self)){            self::$_instance = new self();        }        return self::$_instance;      }       //其它方法  private function __clone(){}      public function query($sql){}   //....}

在外部使用這個單例:

$db = DB::initDB();//$db->somMethod();

另外對于哪些方法用靜態(tài),哪些方法不用,我的想法就是,如果方法內(nèi)部要訪問$this變量的,那么就不應(yīng)當(dāng)用靜態(tài)方法,反之則可以用靜態(tài)。也就是說,靜態(tài)方法不需要通過例實(shí)對象就可以使用。

下一次我們再一起學(xué)習(xí)工廠模式


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿拉善右旗| 杂多县| 麻城市| 沭阳县| 古交市| 凤凰县| 岫岩| 建平县| 大田县| 蓝田县| 休宁县| 漾濞| 全州县| 平泉县| 莆田市| 昭苏县| 应城市| 沧源| 博爱县| 惠水县| 霍林郭勒市| 柳河县| 响水县| 固镇县| 泰顺县| 鲜城| 鲁甸县| 确山县| 扬州市| 社旗县| 平陆县| 镇原县| 厦门市| 雷州市| 建德市| 漠河县| 岳普湖县| 仪陇县| 华宁县| 尼勒克县| 通海县|