单例模型作为一种常见的设计模式,应用非常广泛,如何设计一个案例是最好的呢

我们通常写这篇文章,而且大多数可以在网上搜索的例子都是一样的。
复制代码代码如下所示:
班上的一个
{
保护静态_instance美元= null;
保护功能__construct()
{
/ /禁止新的实例
}
保护功能__clone(){
/ /禁止克隆
}
公共函数getInstance()
{
如果(自::_instance美元= null){
自::_instance美元=新的自我();
}
回归自我::_instance美元;
}
}
B类扩展
{
保护静态_instance美元= null;
}

$ =一:getInstance();
$ B = B::getInstance();
var_dump($ = $ B);
设置为私人的__construct方法,以确保这类不被他人。但这种方法的明显的问题是,不能将代码重用。例如,我们在一个类继承:
复制代码代码如下所示:
B类扩展
{
保护静态_instance美元= null;
}

$ =一:getInstance();
$ B = B::getInstance();
var_dump($ = $ B);
上述代码将输出:
复制代码代码如下所示:
布尔(真的)
问题是,对自我,对自我的参考是决定当类的定义,即继承了B,和他的自我参照仍然指出:解决这一问题,对后来的静态绑定的特点介绍了PHP 5.3.simply来说,静态方法或变量通过static关键字访问。与自我不同,静态的引用是由运行时决定的,因此我们简单地重写我们的代码,使单模式可以被重用。
复制代码代码如下所示:

C类
{
保护静态_instance美元= null;
保护功能__construct()
{

}
保护功能__clone()
{
/ /禁止克隆
}
公共函数getInstance()
{
如果(静态::_instance美元= null){
静态::_instance美元=新的静态;
}
返回静态::_instance美元;
}
}
D类扩展C
{
保护静态_instance美元= null;
}
C = C:美元:getInstance();
美元D = D:getInstance();
var_dump($ C = $);
上述代码输出:
复制代码代码如下所示:
Bool(假)
这样,简单的继承和_instance美元变量重新初始化可以实现单例模式。值得注意的是,以上方法只能用在PHP 5.3。对于PHP的以前的版本,写一个getInstance()的每一个实例方法。

需要提醒的是,在PHP中不单实例模式有线程安全问题像java,但是状态类,我们应该使用单例模式与照顾。单模式的档次与PHP运行的整个生命周期相关,也是内存开销。