单例方法有什么用处?

3

我对Ruby还比较新,学习了它的语法和单例方法。我知道如何创建和使用单例方法,但是为什么要使用它们呢?

有人能给我一些实际应用场景吗?

谢谢!


http://www.ruby-forum.com/topic/86169 - John Dvorak
1
@Damieh 这个问题不是关于单例模式,而是关于 Ruby 中存在的单例方法。在 Ruby 中,单例方法根本不违反面向对象编程。 - Andrew Marshall
@Damieh 的 Singleton 概念并不违反面向对象编程(OOP)。有基于原型的 OOP 和基于类的 OOP。两者都是 OOP,而基于原型的 OOP 只拥有单例模式。 - sawa
当我感觉到这些方法将在我的应用程序的多个地方使用,并且我懒得调用新构造函数时,我会使用Singleton。然而,模块和Singleton方法/Singleton类的基准测试显示,模块比Singleton更快地访问,但差异可以忽略不计。 - bjhaid
3个回答


2
也许你想进行一些调试?假设你有一个对象集合,而你知道其中一个对象在与它的兄弟姐妹一起迭代时会出问题...因此,你修改了一个有问题的方法,将其包装在一些记录/跟踪代码中,这样就不必阅读其他100个项目的日志语句了。
这至少是我能想到的一个牵强的例子。

谢谢,我同意。很好的例子。 - user1763684

1

至少,您需要一个构造函数,它必须是类上的单例方法。没有构造函数,您甚至不会有实例(除非始终从文字创建实例)。而且,您想构建实例的方式不应该被限制在一种方式上。例如,Timenowatutcgm 等构造函数。


你忘记了Class类中无处不在的new单例方法。 - Andrew Marshall
@AndrewMarshall:实际上,new通常是Class的一个实例方法。只有在特殊情况下才会被覆盖。 - Jörg W Mittag
你的意思是类方法,而不是单例方法,是吗?还是说这些与类上的单例方法相同? - Patrick Oscity
@JörgWMittag 您是对的。我不应该在深夜打字 :P - Andrew Marshall
@padde 类方法是在 Class 类的实例上定义的单例方法,或者是在 Class 上定义的实例方法。 - sawa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接