单例模式确保某一个类中只有一个实例,必须自行创建这个实例,它必须自行向整个系统提供这个实例。
饿汉式单例--
1 /** 2 * 3 *饿汉式单例类... 4 * @author Lujianchao 5 * 6 */ 7 8 9 class eagerSingleton{ 10 11 private static $m_instance; 12 13 public static function getInstance(){ 14 15 return self::eagarSingle(); 16 17 } 18 19 private static function eagarSingle(){ 20 21 self::$m_instance=new eagerSingleton(); 22 return self::$m_instance; 23 24 } 25 26 public function getName(){ 27 return 'eagarSingleton'; 28 } 29 }
当这个类被加载时,$m_instance会被初始化
懒汉式单例--
1 /** 2 * 懒汉式单例类 3 */ 4 class LazySingleton{ 5 6 private static $m_instance; 7 8 private function LazySingle(){ 9 10 /** 11 * 静态工厂方法,返回此类的唯一实例 12 */ 13 14 } 15 16 public static function getInstance(){ 17 18 if (self::$m_instance==null){ self::$m_instance=new LazySingleton();} 19 return self::$m_instance; 20 21 } 22 23 public function getName(){ 24 25 return 'LazySingleTon'; 26 27 } 28 29 30 }
整个过程中只实例化一次。
引用---
1 $eagarsingle=eagerSingleton::getInstance(); 2 echo $eagarsingle->getName(); 3 $lazySingle=LazySingleton::getInstance(); 4 echo $lazySingle->getName();
一般在PHP中懒汉式单例模式用的比较多。通常用在整个网站流程中只需要实例化一次的情况。