码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式

时间:2020-01-06 22:31:34      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:对比   测试   单例模式   pac   cti   ima   clone   实例化   public   

三私一公:

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 = \app\Database::getInstance()->test();
echo $res;

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

技术图片

 

 

到此完成了

单例模式

标签:对比   测试   单例模式   pac   cti   ima   clone   实例化   public   

原文地址:https://www.cnblogs.com/waterliang/p/12158849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!