当前位置:首页 > PHP教程 > php高级应用 > 列表

php 设计模式之单例模式例子

发布:smiling 来源: PHP粉丝网  添加日期:2016-07-27 13:23:05 浏览: 评论:0 

单例模式这个东西我相信有许多的朋友都不了解了,今天既然有学习到单例模式我就给各位整理一些小编学习用到的参考内容供各位学习。

1.定义

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。

2.解决的问题/使用场景

在数据库应用方面,使用单例模式,可以避免大量的new操作消耗的资源。
如果在系统中需要一个类来全局控制某些配置信息,那么使用单例模式可以很方便的实现。

3.实现单例模式的要点

需要一个保存类的唯一实例的静态成员变量。

构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义。

需要提供一个访问这个实例的静态方法(一般为getInstance方法),返回实例的引用。

4.实现代码示例

  1. <?php 
  2.  
  3. class Singleton 
  4.  
  5. { 
  6.  
  7.     private static $instance; 
  8.  
  9.     private $conn; 
  10.  
  11.   
  12.  
  13.     private function __construct() 
  14.  
  15.     { 
  16.  
  17.         $this->conn = mysql_connect(...); 
  18.  
  19.     } 
  20.  
  21.   
  22.  
  23.     private function __clone() 
  24.  
  25.     { 
  26.  
  27.     } 
  28.  
  29.   
  30.  
  31.     public static function GetInstance() 
  32.  
  33.     { 
  34.  
  35.         if (!(self::$instance instanceof self)) 
  36.  
  37.         { 
  38.  
  39.             slef::$instance = new self(); 
  40.  
  41.         } 
  42.  
  43.         return self::$instance; 
  44. //phpfensi.com 
  45.     } 
  46.  
  47.   
  48.  
  49.     public function GetDbConnect() 
  50.  
  51.     { 
  52.  
  53.         return $this->conn; 
  54.  
  55.     } 
  56.  
  57.   
  58.  
  59.     public function selectData($sql) 
  60.  
  61.     { 
  62.  
  63.         // $result mysql_query($sql,$this->conn); 
  64.  
  65.         // while mysql_fetch_array($result).... 
  66.  
  67.     } 
  68.  
  69. } 
  70.  
  71.   
  72.  
  73. $db = Singleton::GetInstance(); 
  74.  
  75. $db->selectData("select * from user"); 
  76. ?> 

Tags: php设计模式 php单例模式

分享到: