2、它必須自行創(chuàng)建這個(gè)實(shí)例
3、必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例【結(jié)構(gòu)圖】【主要角色】Singleton定義一個(gè)Ins " /> av电影免费在线看,精品在线播放午夜,成人超碰在线

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

php實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式詳解

【概要】

保證一個(gè)類僅有一個(gè)實(shí)例,并且提供一個(gè)訪問它的全局訪問點(diǎn)【GOF95】

【特點(diǎn)】

1、一個(gè)類只有一個(gè)實(shí)例
2、它必須自行創(chuàng)建這個(gè)實(shí)例
3、必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例

【結(jié)構(gòu)圖】

【主要角色】

Singleton定義一個(gè)Instance操作,允許客戶訪問它的唯一實(shí)例。Instance是一個(gè)類方法。負(fù)責(zé)創(chuàng)建它的唯一的實(shí)例。

【優(yōu)缺點(diǎn)】

1、對唯一實(shí)例的受控訪問
2、縮小命名空間 單例模式是對全局變量的一種改進(jìn)。它避免了那些存儲(chǔ)唯一實(shí)例的全局變量污染命名空間
3、允許對操作和表示的精華 單例類可以有子類。而且用這個(gè)擴(kuò)展類的實(shí)例來配置一個(gè)應(yīng)用是很容易的。你可以用你所需要的類的實(shí)例在運(yùn)行時(shí)刻配置應(yīng)用
4、允許可變數(shù)目的實(shí)例(多例模式)
5、比類操作更靈活

【適用性】

1、當(dāng)類只能有一個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知的訪問點(diǎn)訪問它時(shí)
2、當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過子類化可擴(kuò)展的。并且用戶應(yīng)該無需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。

【單例模式php實(shí)例】

復(fù)制代碼 代碼如下:
<?php
 /**
 * 單例模式
 * -------------
 * @author   zhaoxuejie <zxj198468@gmail.com>
 * @package  design pattern
 * @version  v1.0 2011-12-14
 */
class Singleton {
 
 //私有靜態(tài)成員變量,保存全局實(shí)例
 private static $instance = NULL;
 
 //私有構(gòu)造方法,保證外界無法直接實(shí)例化
 private function __construct(){}
 
 //靜態(tài)方法,返回此類唯一實(shí)例
 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();
?>

php技術(shù)php實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式詳解,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 大姚县| 沈丘县| 邯郸市| 汽车| 班玛县| 平安县| 隆化县| 光山县| 常熟市| 南阳市| 闸北区| 青阳县| 武陟县| 张家港市| 伊宁县| 泾川县| 宁乡县| 宝山区| 铜川市| 彰武县| 镇原县| 霍城县| 闸北区| 老河口市| 东乌| 灵寿县| 苍山县| 开封县| 盖州市| 观塘区| 鄂温| 南雄市| 海南省| 新乡市| 临朐县| 思茅市| 中江县| 扎囊县| 阳高县| 改则县| 宜春市|