一、什么是单例模式?
某个类是能有一个实例对象,当自动实例化时,向整个系统提供这个实例对象
二、作用是什么?
使用同一个实例对象,不在new新的,减少系统资源浪费
三、特点是什么?
final标识的类【禁止继承】
私有构造函数【防止类外实例化】
私有克隆方法【禁止被克隆】
私有静态属性【保存类的实例对象】
公有静态函数【调用类的接口】
以上行为的目的:防止程序重新实例化【消费新的资源】
四、应用场景
常用的数据库操作类,每一次使用数据库裤操作类都要new一个新的对象,对于系统和内存资源浪费是巨大的,并且每new一个都要和数据库连接,那么数据库的连接数很快会用完
五、示例
<?php final class single{ private $rand = 0; // 存放实例化的对象 static private $obj = null; // 防止类外实例化 private function __construct(){ return $this->rand = mt_rand(1,99999); } // 调用类的接口 static public function usb(){ if(!self::$obj){ self::$obj = new single(); } return self::$obj; } public function fff(){ echo $this->rand; } // 防止用户克隆 private function __clone(){ echo '禁止克隆!'; } } $single1 = single::usb(); $single2 = single::usb(); print_r($single1); print_r($single2); $single2 ->fff();