单例模式:一个类仅允许被实例化一次学习

Original 2018-11-19 10:27:54 219
abstract:<?php/** * Created by PhpStorm. * User: Administrator * Date: 2018-11-19 * Time: 10:21 *///单例模式:一个类仅允许被实例化一次class Wife{}$wife1 = new Wife;$wife2 = new Wife;echo ($wife1 instanceof Wife) ? '是

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018-11-19
* Time: 10:21
*/

//单例模式:一个类仅允许被实例化一次
class Wife
{

}

$wife1 = new Wife;
$wife2 = new Wife;

echo ($wife1 instanceof Wife) ? '是' : '不是';
echo '<br>';
echo ($wife2 instanceof Wife) ? '是' : '不是';
echo '<br>';
echo ($wife1 === $wife2) ? '完全相等' : '不相等';
echo '<br>';
var_dump($wife1, $wife2);


//返回false,二者并不相等 ID不相等
// 类仅被实例化一次即可

echo "<hr><br>";
 

class Hubby
{
    
   
   //将构造方法私有化:禁止从外部实例化类
   private function __construct() {}

   //将克隆方法私有化:禁止从外部克隆该类的实例
   private function __clone() {}
 


   //创建内部属性$instance,用来保存当前类实例
   protected static $instance = null;

   //创建外部接口,用来返回当前类的唯一实例
   public static function getInstance()
   {
       if (is_null(static::$instance)) {
           static::$instance = new static();
       }

       return static::$instance;
   }
}

//从类的外部实例化当前类Demo1
$hubby1 = Hubby::getInstance();
$hubby2 = Hubby::getInstance();

echo ($hubby1 instanceof Hubby) ? '是' : '不是';
echo '<br>';
echo ($hubby2 instanceof Hubby) ? '是' : '不是';
echo '<br>';
echo ($hubby1 === $hubby2) ? '完全相等' : '不相等';
echo '<br>';
var_dump($hubby1, $hubby2);


Correcting teacher:查无此人Correction time:2018-11-19 10:47:36
Teacher's summary:很不错,牢记一些模式,会让你写代码的速度更快。加油

Release Notes

Popular Entries