單例模式程序代碼:
1
2 /**
3 * 單例模式
4 *
5 * 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點
6 *
7 */
8 class Singleton
9 {
10 static private $_instance = null;
11
12 private function __construct()
13 {
14 }
15
16 static public function getInstance()
17 {
18 if(is_null(self::$_instance)) {
19 self::$_instance = new Singleton();
20 }
21 return self::$_instance;
22 }
23
24 public function display()
25 {
26 echo "it is a singlton class function";
27 }
28 }
29
30 // $obj = new Singleton(); // 聲明不能成功
31 $obj = Singleton::getInstance();
32 var_dump($obj);
33 $obj->display();
34
35 $obj1 = Singleton::getInstance();
36 var_dump(($obj === $obj1));
php布局應用Singleton分析如以上代碼所反映,
單例模式屬于創建型模式,它是設計模式中最簡單的一種模式,當然它的使用也是無處不在的。
單例模式保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
當需要控制一個類的實例數量,且調用者可以從一個公共的眾所周知的訪問點訪問時,我們就可以考慮使用單例模式了。
我們用 UML 來設計單例模式,當然在以后的設計模式的設計部分,我們都將采用 UML 來描述我們的設計,這樣就更為形象化了。
從 UML 設計圖中我們可以看出,為了讓一個類只有一個實例,它必須創建一個靜態變量,然后我們用一個公共靜態的 Instance() 的方法來創建它,但是為了避免這個類自身的構造函數可以創建對象,我們將構造函數設置成 protected 或者 private,這樣外部就只能通過 Instance() 的方法來創建一個靜態的 Singleton 類。看來這樣我們達到了我們的目的,接下來我們看代碼:
view source
print?1 public class Singleton {
2 private static Singleton instance;
3 protected Singleton()
4 public static Singleton Instance() {
5 if(instance != null) instance = new Singleton();
6 return instance;
7 }
8 }
由此看來,實現單例模式我們可以做下列幾步:
在類中創建一個靜態變量,變量類型為當前類;
在類中創建一個公共的靜態方法,讓用戶可以通過此方法創建此類的靜態對象;
最后將構造函數設置為 protected 或者 private。
Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號 google網站地圖 百度網站地圖 網站地圖
公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752
法律聲明:未經許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明