单例模式

Posted waterliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式相关的知识,希望对你有一定的参考价值。

三私一公:

1. 私有化属性

2. 私有化构造方法

3. 私有化克隆方法

4. 公有化静态方法,供外部调用

 

单例类:

<?php

namespace app;

class Database
{
    /**
     * 私有化静态属性
     */
    private static $db;

    /**
     * 私有化构造方法
     * Database constructor.
     */
    private function __construct(){}

    /**
     * 私有克隆方法
     * Database constructor.
     */
    private function __clone(){}

    /**
     * 公有化静态方法
     */
    static public function getInstance()
    {
        if (! self::$db) {
            // 实例化自身,并且保存在属性中
            self::$db = new self();
        }
        return self::$db;
    }

    /**
     * 测试方法,这里只能是public
     */
    public function test()
    {
        return "测试成功";
    }
}

 

在需要用到该类的地方用一下方法调用

<?php

spl_autoload_register(function ($class) {
    include $class . ‘.php‘;
});

// 单例中的方法只能通过getInstance这个静态属性来调用
$res = appDatabase::getInstance()->test();
echo $res;

最后附上我的目录结构,方便对比命名空间

技术图片

 

 

到此完成了

以上是关于单例模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

片段作为 Android 中的单例

单例片段或保存网页视图状态

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块