abstract:<?php//hubby類僅允許被實例化一次class Hubby{ //1.new 來創(chuàng)建類實例 //2.clone 來克隆當(dāng)前類的實例 private function __construct(){}//構(gòu)造器私有化 private function __clone(){}//克隆私有化 //創(chuàng)建類的內(nèi)部靜態(tài)屬性,用于保存類的唯一實例 protected static $instance
<?php
//hubby類僅允許被實例化一次
class Hubby{
//1.new 來創(chuàng)建類實例
//2.clone 來克隆當(dāng)前類的實例
private function __construct(){}//構(gòu)造器私有化
private function __clone(){}//克隆私有化
//創(chuàng)建類的內(nèi)部靜態(tài)屬性,用于保存類的唯一實例
protected static $instance = null;
//創(chuàng)建一個外部接口,創(chuàng)建并返回當(dāng)前類的唯一實例
public static function getInstance(){
if (is_null(static::$instance)) {
static::$instance = new static();
}
return static::$instance;
}
}
//從外部實例化Hubby類
$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:2019-04-01 10:02:37
Teacher's summary:單例模式, 在很多地方都有應(yīng)用, 它的設(shè)計思想,影響到了許多其它的設(shè)計模式, 多做幾次, 它是創(chuàng)建型模式的基礎(chǔ)之一