首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新关键字与创建实例

新关键字与创建实例
EN

Stack Overflow用户
提问于 2012-04-17 21:12:06
回答 3查看 612关注 0票数 2

在某些开源代码中,为什么要使用:

代码语言:javascript
复制
$router = Cfw_Router::getInstance();

而不是仅仅使用

代码语言:javascript
复制
$rounter = new Cfw_Router();

它有优势吗?

getInstance()

代码语言:javascript
复制
public static function getInstance() {
    if (null === self::$__instance) {
        self::$__instance = new self();
    }
    return self::$__instance;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-17 21:14:07

他们正在利用单例模式。基本上,它只允许在任何给定时间存在一个实例。但是,有时可以使用它来提供全局变量,这在设计中并不总是最好的(参见上面链接中的批评)。

票数 4
EN

Stack Overflow用户

发布于 2012-04-17 21:14:05

第一个用途称为singleton。它确保只存在对象的一个实例。

票数 4
EN

Stack Overflow用户

发布于 2012-04-17 21:16:57

这是因为单例模式。使用getInstance,在整个程序中只创建一个对象实例,而使用new,则在每个调用中创建一个新的对象实例。例如,在数据库处理对象中,这可能很有用。您不希望程序中有多个对象实例(和多个连接),而是希望在所有程序中只需要一个数据库处理程序和连接实例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10199228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档