<?php
class test{
protected function __construct(){
}
public static function getInstance(){
static $_test;
if (empty($_test)) {
$_test = new test();
}
return $_test;
}
}
为什么在单例模式中该类要有一个public static的方法,而其他的方法都不能用public方法。这样做的目的是什么
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
简单的说,就是不让再次初始化了,也没有这个必要,保证就一个实例。需要什么方法,你调用得到的实例中的public方法啊。
单例统一的访问入口
单例简单来说就是 只有一个访问入口 单例会阻止其他对象实例化自己的副本 。
这个静态方法是提供给该类意外的代码静态调用使用的,而楼主说类中其他方法都不是public方法,那肯定是因为设计上不允许类以外的代码直接调用类中的方法,而是通过静态调用getinstance方法实例化类,通过类自己调用类里面的方法,这样可以有效地避免类以外的代码随便修改类中的方法,确保了类中方法的安全性
单利模式必须确保只能有一个实例,并且要对其他所有对象提供这一实例;构造函数不能用public是为了避免类在外部被实例化,要不然就成多例了。另外,你这种方式线程也是不安全的。
关于单例模式可以看下PHP之单例模式(职责模式),希望对你有帮助