abstract:单例模式:一个类仅允许被实例化一次用户从外部创建当前类实例的途径有二个:1. 使用new关键字直接实例化该类2. 使用clone关键字直接克隆当前类的实例 我们在类中,只需要将这二个创建类实例的途径禁用即可单例模式步骤将构造方法私有化将克隆方法私有化创建内部属性创建外部接口从类的外部实例化当前类class Teacher { pr
单例模式:一个类仅允许被实例化一次
用户从外部创建当前类实例的途径有二个:
1. 使用new关键字直接实例化该类
2. 使用clone关键字直接克隆当前类的实例
我们在类中,只需要将这二个创建类实例的途径禁用即可
单例模式步骤
将构造方法私有化
将克隆方法私有化
创建内部属性
创建外部接口
从类的外部实例化当前类
class Teacher { private function __construct(){} private function __clone(){} protected static $instance = null; public static function getInstance(){ if(is_null(static::$instance)){ static::$instance = new static(); } return static::$instance; } } $teacher1 = Teacher::getInstance(); $teacher2 = Teacher::getInstance(); echo ($teacher1 instanceof Teacher)?'是':'不是'; echo '<br>'; echo ($teacher2 instanceof Teacher)?'是':'不是'; echo '<br>'; echo ($teacher1 === $teacher2)?'完全相等':'不相等'; echo '<br>'; var_dump($teacher1,$teacher2);
Correcting teacher:韦小宝Correction time:2018-12-26 14:55:43
Teacher's summary:写的不错,单例模式可以增加我们的安全性哦!课后记得要多练习哦!