麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

和我一起學設計模式(—)

2019-11-15 01:56:32
字體:
來源:轉載
供稿:網友
和我一起學設計模式(—)

  今天我們一起來學習單例模式:

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

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

   單例模式也被認為是職責模式,因為它將創建對象的控制權委托到一個單一的訪問點上。

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

這可以防止我們去打開數據庫的多個連接或者不必要的使用多余的系統資源。在復雜的系統中,還可以起到維護應用程序狀態的作用。

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

1.它至少要有一個構造函數,并且被標記為私有(PRivate)

2.擁有一個保存類的實例的靜態成員變量。

3.擁有一個可以訪問這個實例的公共的靜態方法。

和普通類不同的是,單例類不能在其它類中直接實例化,只能被其自身實例化。要做到這一點,必須要私有化它的構造函數,并且防止被克隆。用代碼來實現一個單例,我們以創建數據庫的連接為例:

//get data classclass DB {    private $_db;    private static $_instance;    private function __construct(){        $DSN = '../../content/xxtebook.db';        $this->_db = new PDO('sqlite:'.$DSN);    }    //初始化數據庫連接    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();

另外對于哪些方法用靜態,哪些方法不用,我的想法就是,如果方法內部要訪問$this變量的,那么就不應當用靜態方法,反之則可以用靜態。也就是說,靜態方法不需要通過例實對象就可以使用。

下一次我們再一起學習工廠模式


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99re久久最新地址获取 | 国产1区2区在线 | 毛片av网 | 国产一区二区国产 | 色污视频在线观看 | 国产免费小视频在线观看 | 九九热视频免费观看 | 97超碰资源站 | 最新黄色电影网站 | 羞羞视频免费入口网站 | 精品一区二区三区在线观看视频 | 成人免费观看在线 | 欧美一级特级 | 亚洲精品永久视频 | 国产91一区 | 一区二区三区在线观看视频 | 精品三级内地国产在线观看 | 国产福利视频在线观看 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 久久久久久久高清 | 中文在线观看视频 | 成人男男视频拍拍拍在线观看 | 免费看搡女人无遮挡的视频 | 免费在线观看成人av | 免费观看欧美一级片 | 91精品国产综合久久婷婷香蕉 | 黄色特级片黄色特级片 | 久章草在线视频 | 欧美精品一二三区 | 国产成人在线看 | 欧美日日操 | 日韩黄色精品视频 | 国产1区视频 | 毛片视频网站 | 精品久久久久久久久亚洲 | 欧美日韩亚洲在线观看 | 日本高清无遮挡 | 亚洲一区二区三区在线免费观看 | 97人操 | 永久免费黄色大片 | hdjapanesemassagehd日本 |