«

PHP 面向对象单例模式记录

时间:2024-4-30 10:46     作者:杨佳乐     分类:


1.单例模式就是设计的类最多只能得到一个对象

2.单例模式的设计规范是“三私一公”

私有化构造方法: 禁止在类的外部无限实例化对象

私有化克隆方法: 禁止对象无限克隆对象

私有化静态属性: 保存类内部实例化得到的对象 (防止被外部更改)

公有化静态方法: 允许外部通过调用类内部方法获取对象

该方法内大致逻辑 获取静态属性,验证是否已经实例化为当前类对象,如果实例化则返回该属性,如果未实例化则 new self();赋值给该属性并返回

3.单例模式如果还有其他诉求,可以在类中增加相应的其他类成员(方法)

4.单例模式的目的是为了保护资源的唯一性

<?php

class demo
{

    //私有化静态属性
    private static $obj = null;

    //私有化构造方法,防止外部实例化
    private function __construct(){}

    //共有获取实例方法
    public static function getInstance()
    {
        if(self::$obj instanceof demo){
            return self::$obj;
        }else{
            self::$obj=new self();
            return self::$obj;
        }

    }

    //私有化克隆方法,防止外部克隆实例
    private function __clone(){}

}

$demo=demo::getInstance();
$demo1=demo::getInstance();

var_dump($demo);
var_dump($demo1);
//object(demo)#1 (0) { } object(demo)#1 (0) { }

标签: 单例模式