ruby学習メモ Singleton
コンストラクタの private 化とインスタンスの Singleton 化
class MyClass # new をプライベート化することにより、コンストラクタによるインスタンス化 # が出来ないようにする private_class_method :new #インスタンスを保持するクラス変数 @@singleton = nil #インスタンス生成クラスメソッド def MyClass.create @@Logger = new unless @@singleton @@singleton end end
irb(main):141:0* MyClass.create.object_id => 4 irb(main):142:0> MyClass.create.object_id => 4 irb(main):143:0> irb(main):144:0* MyClass.new NoMethodError: private method `new' called for MyClass:Class from (irb):144 from :0