什么是单例模式
通过对构造函数__contruct和析构函数__destruct的私有化,从而防止从类的外部通过new创建对象,然后在类的内部来进行实例化,并用静态变量存储到内存中,之后通过判断类是否已经被实例化,如果已经被实例化,则无需再创建对象。
使用场景
主要用于项目中经常会用到的类,比如数据库类的实例化、Redis类的实例化等
优点
1.不需要反复的创建对象实例,可以节省内存消耗
2.可以提升系统的性能
3.提供了唯一实例的受控访问,方便后期维护
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
class A { private static $_instance;//用来存储实例的静态变量 private function __construct() { # code... } static function getInstance() { # 判断是否存在已经实例化过的对象,这样可以保证永远只有一个被实例化过的对象php if (!self::$_instance) { # 如果没有再次进行实例化 self::$_instance = new self; echo "aa"; } return self::$_instance; } } A::getInstance();//输出aa A::getInstance();//无输出 |