0

全局对象(在 C++ 中)是否可以始终替换单例模式?如果是,单例模式的优势是什么?

4

3 回答 3

2

两者都提供不同的功能,

全局对象在全局范围内创建一个可以跨多个翻译单元访问的对象,而单例模式限制用户能够为该特定类创建单个对象。

底线:
您正在比较苹果和橙子。您根据要实现的功能选择了一个。

于 2013-03-17T12:22:11.447 回答
0

全局对象在您的程序中可用(这使初学者看起来更容易管理,直到您开始做任何不平凡的事情,这将成为调试的噩梦,因为它可能是导致错误的任何代码)。它被强烈反对。

单例是一个对象,它有一个限制,你只能制作其中一个。它们感觉是全局的,因为它们通常是通过静态函数以全局方式访问的,因此在调试时仍然可能是您的任何代码破坏了对象,因此管理起来同样痛苦。根据语言和派系/社区/书籍,它被强烈反对。

从某种意义上说,您的问题似乎是在寻求“正确”的方式。最好的方法是完全避免它们并将您的数据很好地封装在类中,并将它们清楚地作为参数传递给函数。

于 2013-03-17T12:48:08.073 回答
0

一个优点我看到一个人无法控制全局对象的创建,有时当对象需要稀缺资源时可能会很昂贵,但是通过单例方法中的延迟创建,您可以将对象的创建推迟到第一次访问。

于 2013-03-17T12:54:06.490 回答