Mix-inによりsingletonパターンを提供する。
Singletonモジュールをincludeすることにより、クラスは 高々ひとつのインスタンスしか持たないことが保証される。
Singletonをmix-inしたクラスの
クラスメソッドinstance
はその唯一のインスタンスを返す。
new
はprivateメソッドに移され、外部から呼び出そうとするとエラーになる。
class SomeSingletonClass include Singleton #.... end a = SomeSingletonClass.instance b = SomeSingletonClass.instance # a and b are same object p [a,b] a = SomeSingletonClass.new # error (`new' is private)