php實現設計模式中的單例模式詳解_php技巧

來源:互聯網
上載者:User

【概要】

保證一個類僅有一個執行個體,並且提供一個訪問它的全域訪問點【GOF95】

【特點】

1、一個類只有一個執行個體
2、它必須自行建立這個執行個體
3、必須自行向整個系統提供這個執行個體

【結構圖】

【主要角色】

Singleton定義一個Instance操作,允許客戶訪問它的唯一執行個體。Instance是一個類方法。負責建立它的唯一的執行個體。

【優缺點】

1、對唯一執行個體的受控訪問
2、縮小命名空間 單例模式是對全域變數的一種改進。它避免了那些儲存唯一執行個體的全域變數汙染命名空間
3、允許對操作和表示的精華 單例類可以有子類。而且用這個擴充類的執行個體來配置一個應用是很容易的。你可以用你所需要的類的執行個體在運行時刻配置應用。
4、允許可變數目的執行個體(多例模式)
5、比類操作更靈活

【適用性】

1、當類只能有一個執行個體而且客戶可以從一個眾所周知的訪問點訪問它時
2、當這個唯一執行個體應該是通過子類化可擴充的。並且使用者應該無需更改代碼就能使用一個擴充的執行個體時。

【單例模式php執行個體】

複製代碼 代碼如下:

<?php
 /**
 * 單例模式
 * -------------
 * @author   zhaoxuejie <zxj198468@gmail.com>
 * @package  design pattern
 * @version  v1.0 2011-12-14
 */
class Singleton {
 
 //私人靜態成員變數,儲存全域執行個體
 private static $instance = NULL;
 
 //私人構造方法,保證外界無法直接執行個體化
 private function __construct(){}
 
 //靜態方法,返回此類唯一執行個體
 public static function getInstance(){
  if(!isset(self::$instance)){
   $c = __CLASS__;
   self::$instance = new $c;
  }
  return self::$instance;
 }
 
 //測試用方法
 public function info(){
  return 'ok';
 }
 
 //防止複製
 public function __clone(){
  trigger_error('Clone is not allowed.', E_USER_ERROR);
 }
}

$s = Singleton::getInstance();
echo $s->info();
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.