Ruby单例模式写法:

 

class Logger
  @@instance = Logger.new
  
  def self.instance
    return @@instance
  end
  
  private_class_method :new
end

logger1 = Logger.instance
logger2 = Logger.instance
puts logger1
puts logger2

#looger3 = Logger.new # will not work

 

 

另外一种写法, 引用component:

 

require 'singleton' 
class SLogger
  include Singleton
end

logger1 = SLogger.instance
logger2 = SLogger.instance
puts logger1
puts logger2
 

 

更多推荐