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