在某些开源代码中,为什么要使用:
$router = Cfw_Router::getInstance();而不是仅仅使用
$rounter = new Cfw_Router();它有优势吗?
getInstance()
public static function getInstance() {
if (null === self::$__instance) {
self::$__instance = new self();
}
return self::$__instance;
}发布于 2012-04-17 21:14:07
他们正在利用单例模式。基本上,它只允许在任何给定时间存在一个实例。但是,有时可以使用它来提供全局变量,这在设计中并不总是最好的(参见上面链接中的批评)。
发布于 2012-04-17 21:14:05
第一个用途称为singleton。它确保只存在对象的一个实例。
发布于 2012-04-17 21:16:57
这是因为单例模式。使用getInstance,在整个程序中只创建一个对象实例,而使用new,则在每个调用中创建一个新的对象实例。例如,在数据库处理对象中,这可能很有用。您不希望程序中有多个对象实例(和多个连接),而是希望在所有程序中只需要一个数据库处理程序和连接实例。
https://stackoverflow.com/questions/10199228
复制相似问题