我正在查看2009年构建的网站的源代码,它是一个自定义框架。返回实例变量V/s返回直接对象
有什么区别?
<?php
class DbAccess {
private static $instance;
/**
* Returns the instance of the DB Class
*/
public static function getInstance()
{
self::$instance = new DbAccess();
return self::$instance;
}
}
V /秒
<?php
class DbAccess {
/**
* Returns the instance of the DB Class
*/
public static function getInstance()
{
return new DbAccess();
}
}
我有几个定做框架的工作,并设置不同的图案,但在时间库,只见返回实例的方法是通过self::$instance
有时,它通过new
直接返回这是一个很好的做法?考虑即将推出的PHP版本。
的首先是尝试[单身人士](http://en.wikipedia.org/wiki/Singleton_pattern)。尽管它不断创建新的实例,但这并不完全正确。第二个本质上是一个糟糕的工厂方法。两者都不可取。看到http://en.wikipedia.org/wiki/Singleton_pattern#Drawbacks – Phil 2013-03-05 06:09:51
是的,完全明白!但是,为什么很多人会遵循第二种模式? – Karma 2013-03-05 06:11:19