**1、什么是單例模式?**
? ? ?從名字可以理解,確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例。通俗理解(單例模式一般也就是強調類的靜態調用,一個進程對一個類的多次調用只產生一個類對象)
**2、單例模式有那些好處呢?**
PHP應用主要用于數據庫應用,因此會存在大量的數據庫操作,使用單例模式可以避免大量的 new 操作消耗的資源。
單例模式是一種對于全局變量的改進
3、實例場景:
??
~~~
<?php
/*
* PHP生成對象之設計模式—單例模式
* 用于保存基本信息的單例類 存儲URL目錄、文件路徑等數據
* 1、Preferences對象可以被系統中中任何對象使用
* 2、Preferences對象不被存儲在會被覆寫的全局變量中
*/
class Preferences{
private $props=array();
//保存例實例在此屬性中
private static $instance;
//構造函數聲明為private,防止直接創建對象
private function __construct(){}
//單例方法
public static function getInstance(){
if(empty(self::$instance)){
self::$instance=new Preferences();
}
return self::$instance;
}
//設置屬性和屬性值
public function setProperty($key,$val){
$this->props[$key]=$val;
}
//讀取值
public function getProperty($key){
return $this->props[$key];
}
}
//得到Preferences類的單例對象
$pref=Preferences::getInstance();
//設置一個屬性 name 的值 為matt
$pref->setProperty("name","matt");
//移除引用
unset($pref);
//得到Preferences類的單例對象
$pref2=Preferences::getInstance();
//輸出屬性name 的屬性值 該屬性值未丟失
print $pref2->getProperty("name");
~~~
- 前言
- PHP生成對象之設計模式—單例模式
- PHP生成對象之設計模式—工廠方法模式
- PHP之設計模式—適配器模式
- PHP之設計模式—建造者模式(通過選擇mysql,mongo數據庫鏈接類型做說明)
- PHP之設計模式—委托模式
- PHP面向對象學習一:對象基礎實踐
- PHP面向對象學習之二:深入了解面向對象高級特性
- PHP面向對象學習之三:抽象類和接口類的實際作用
- PHP解決問題進化論(整理筆記)
- PHP7新特性整理介紹篇
- php-fpm 與 Nginx優化總結
- Centos+Nginx+PHP7.0編譯安裝(和PHP5.6老版本共存)
- PHP7:Mongodb API使用
- PHP之include/require深入了解
- PHP內核了解:生命周期及運行模式