zoukankan      html  css  js  c++  java
  • PHP 单例模式代码片段

     1 <?php
     2 
     3 error_reporting(E_ALL | E_STRICT);
     4 
     5 class single{
     6 
     7     public $hash;
     8 
     9     static protected $ins = null;
    10 
    11     final protected function __construct(){ //final 能被继承,不能被重写(防止子类重写构造方法)
    12         $this->hash = mt_rand(1,9999);
    13     }
    14 
    15     static public function getInstance(){
    16         if(self::$ins instanceof self){ //instanceof 判断某个对象是不是某个类的实例
    17             return self::$ins;
    18         }
    19         self::$ins =  new self();
    20         return self::$ins;    
    21     }
    22 }
    23 
    24 $s1 = single::getInstance();
    25 $s2 = single::getInstance();
    26 
    27 var_dump($s1);
    28 var_dump($s2);
    29 
    30 //son类继承single类
    31 class son extends single{
    32 }
    33 
    34 $s1 = son::getInstance();
    35 $s2 = son::getInstance();
    36 
    37 var_dump($s1);
    38 var_dump($s2);

    页面输出

    object(single)[1]
      public 'hash' => int 9762
    object(single)[1]
      public 'hash' => int 9762
    object(single)[1]
      public 'hash' => int 9762
    object(single)[1]
      public 'hash' => int 9762

     主要思路:

    1. 保护或者私有构造函数,防止外部实例化

    2. 内部开放一个公共的静态方法,负责实例化

    3. 类有一个静态属性,用于存放对象

    当静态属性已经存放对象时,直接 return 该对象,否则实例化该类,然后 return 对象。  

  • 相关阅读:
    第一次博客作业
    个人总结
    第三次个人作业——用例图设计
    第二次个人编程
    第一次个人编程
    第一次随笔
    个人总结
    第三次个人作业——用例图设计
    第二次结对作业
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/dee0912/p/4306071.html
Copyright © 2011-2022 走看看