单例模式

单例模式确保某一个类中只有一个实例,必须自行创建这个实例,它必须自行向整个系统提供这个实例。

饿汉式单例--

 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 }
View Code

当这个类被加载时,$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 }
View Code

整个过程中只实例化一次。

引用---

1 $eagarsingle=eagerSingleton::getInstance();
2 echo $eagarsingle->getName();
3 $lazySingle=LazySingleton::getInstance();
4 echo $lazySingle->getName();
View Code

一般在PHP中懒汉式单例模式用的比较多。通常用在整个网站流程中只需要实例化一次的情况。

原文地址:https://www.cnblogs.com/phplover/p/3087010.html