Skip to content

Latest commit

 

History

History
45 lines (36 loc) · 1.09 KB

单例模式.md

File metadata and controls

45 lines (36 loc) · 1.09 KB

单例模式

单例模式

# 概念
单例模式: 一个类只能实例化一次, 当其再次实例化时, 返回第一次实例化的对象, 可以节省资源

# 应用场景
DB类、Cache类、配置类等的实例化

# 实现(三私一公)
私有的构造方法 (限制只能类内部实例化, 防止类外部实例化)
私有的克隆方法 (防止通过克隆生成对象)
私有的静态属性 (保存类的实例)
公有的静态方法 
(提供实例, 实例化前先判断该类是否已经被实例化, 若是则返回实例化对象, 若不是则实例化对象并将该对象保存在类的静态属性中)

代码

<?php

class Single
{
    private static $instance;

    private function __clone() {}

    private function __construct() {}

    public static function getInstance() {
        if (self::$instance === NULL) self::$instance = new self();
        return self::$instance;
    }
}

$obj1 = Single::getInstance();
$obj2 = Single::getInstance();

// 用 === 可以判断两个变量是否指向同一个对象
var_dump($obj1 === $obj2);

运行结果

bool(true)