标签:
1 <?php 2 class Singleton 3 { 4 /** 5 * Description:(1)静态变量,保存全局实例,跟类绑定,跟对象无关 6 * (2)私有属性,为了避免类外直接调用 类名::$instance,防止为空 7 */ 8 private static $instance; 9 10 /** 11 * Description:数据库连接句柄 12 */ 13 private $db; 14 15 /** 16 * Description:私有化构造函数,防止外界实例化对象 17 */ 18 private static function __construct() 19 { 20 } 21 22 /** 23 * Description:私有化克隆函数,防止外界克隆对象 24 */ 25 private function __clone() 26 { 27 } 28 29 /** 30 * Description:静态方法,单例访问统一入口 31 * @return Singleton:返回应用中的唯一对象实例 32 */ 33 public static function GetInstance() 34 { 35 if (!(self::$instance instanceof self)) 36 { 37 self::$instance = new self(); 38 } 39 return self::$instance; 40 } 41 42 /** 43 * Description:获取数据库的私有方法的连接句柄 44 */ 45 public function GetDbConnect() 46 { 47 return $this->db; 48 } 49 }
1 public class SingletonClass{ 2 private static SingletonClass instance=null; 3 public static SingletonClass getInstance() 4 { 5 if(instance==null) 6 { 7 instance=new SingletonClass(); 8 } 9 return instance; 10 } 11 private SingletonClass(){ 12 } 13 }
1 //在java中,我们不能用static修饰顶级类(top level class)。 2 //只有内部类可以为static 3 public static class Singleton{ 4 //在自己内部定义自己的一个实例,只供内部调用 5 private static final Singleton instance = new Singleton(); 6 private Singleton(){ 7 //do something 8 } 9 //这里提供了一个供外部访问本class的静态方法,可以直接访问 10 public static Singleton getInstance(){ 11 return instance; 12 } 13 }
public static class Singleton{ private static Singleton instance=null; private Singleton(){ //do something } public static Singleton getInstance(){ if(instance==null){ synchronized(Singleton.class){ if(null==instance){ instance=new Singleton(); } } } return instance; } }
1 class CSingleton 2 { 3 private: 4 CSingleton() //构造函数是私有的 5 { 6 } 7 public: 8 static CSingleton * GetInstance() 9 { 10 static CSingleton *m_pInstance; 11 if(m_pInstance == NULL) //判断是否第一次调用 12 m_pInstance = new CSingleton(); 13 return m_pInstance; 14 } 15 };
标签:
原文地址:http://www.cnblogs.com/lovelp/p/singleton_pattern.html