我的理解是,singleton class 提供了一个扩展(注入)某个实例对象的方法的机制,扩展的方法只在这个实例中存在。跟 include 的区别是,include 用于扩展 类的方法,对所有该类对象都有效。 这样理解对吗? 另外,为什么要设计这样一个机制?貌似其他语言中没见过
singleton 大部分 OO 语言都有的吧
singleton 类就是类,区别就是他只有一个实例
原因是 ruby 的 method 必有接收者
#1 楼 @blacktulip 你歪楼了
#2 楼 @jjym singleton class 就是你自己,object 就是别人眼中的你
#4 楼 @bhuztez 这个解释太有个性了..
汗 这个跟单例模式不是一回事吧。。
使用 singleton 的意义在于某些时候某个类创建多个实例是没意义的,本来就应该只存在一个实例。例如 NilClass,只有一个 nil,表示空无一物,多个 NilClass 实例没有意义 singleton 是一种设计模式,在所有直接支持 OO 的语言中都可以实现出来
这两个解释的很好了:
http://stackoverflow.com/questions/212407/what-exactly-is-the-singleton-class-in-ruby http://www.devalot.com/articles/2008/09/ruby-singleton
#8 楼 @zhlwish 正解!多谢