全局对象与单一模式

时间:2013-03-17 12:19:03

标签: c++ design-patterns

全局对象(在C ++中)是否总能替换Singleton模式?如果是,那么Singleton模式的优势是什么?

3 个答案:

答案 0 :(得分:2)

两者都提供不同的功能,

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

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

答案 1 :(得分:0)

整个程序都可以使用一个全局对象(这使得初学者看起来更容易管理,直到你开始做任何非常重要的事情,这会成为调试的噩梦,因为它可能是任何导致错误的代码)。这是非常不满意的。

单例是一个对象,它有一个限制,你只能制作其中一个。他们感觉全局,因为它们通常通过静态函数以全局方式访问,因此在调试时它仍然可能任何代码破坏对象,因此管理同样痛苦。根据语言和集团/社区/书籍的不同,它非常不受欢迎。

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

答案 2 :(得分:0)

我看到一个优点是无法控制全局对象的创建,有时在对象需要稀缺资源时可能成本高昂,但是在单例方法中通过延迟创建,您可以推迟创建对象直到它首次被访问。