zoukankan      html  css  js  c++  java
  • 单例模式

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

    饿汉式单例--

     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中懒汉式单例模式用的比较多。通常用在整个网站流程中只需要实例化一次的情况。

  • 相关阅读:
    浅谈T-SQL中的特殊联结
    浅谈T-SQL中的联接查询
    对AccessViolationException的一些总结
    浅谈JavaScript中的定时器
    浅谈跨域
    浅谈JavaScript中的Ajax
    浅谈JavaScript中的能力检测
    c# webConfig中的session超时详细设置
    c# session总结
    重启sql server服务两种方式
  • 原文地址:https://www.cnblogs.com/phplover/p/3087010.html
Copyright © 2011-2022 走看看