php - 单例模式疑惑?
ringa_lee
ringa_lee 2017-04-11 10:27:10
[PHP讨论组]

<?php

class test{

protected function __construct(){

}

public static function getInstance(){
    static $_test;
    if (empty($_test)) {
        $_test = new test();
    }
    return $_test;
}

}

为什么在单例模式中该类要有一个public static的方法,而其他的方法都不能用public方法。这样做的目的是什么

ringa_lee
ringa_lee

ringa_lee

全部回复(6)
PHP中文网

简单的说,就是不让再次初始化了,也没有这个必要,保证就一个实例。需要什么方法,你调用得到的实例中的public方法啊。

PHP中文网

单例统一的访问入口

PHPz

单例简单来说就是 只有一个访问入口 单例会阻止其他对象实例化自己的副本 。

高洛峰

这个静态方法是提供给该类意外的代码静态调用使用的,而楼主说类中其他方法都不是public方法,那肯定是因为设计上不允许类以外的代码直接调用类中的方法,而是通过静态调用getinstance方法实例化类,通过类自己调用类里面的方法,这样可以有效地避免类以外的代码随便修改类中的方法,确保了类中方法的安全性

迷茫

单利模式必须确保只能有一个实例,并且要对其他所有对象提供这一实例;构造函数不能用public是为了避免类在外部被实例化,要不然就成多例了。另外,你这种方式线程也是不安全的。

阿神

关于单例模式可以看下PHP之单例模式(职责模式),希望对你有帮助

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号