在Ruby中使用Singleton模式

来源:互联网 发布:cad编程语言 编辑:程序博客网 时间:2024/05/16 03:03

关于单例模式的概念,这里就不多说了。

Ruby如何实现,先看下面的代码:

  1. class MyLogger
  2.   private_class_method :new
  3.   @@logger = nil
  4.   def MyLogger.create
  5.     @@logger = new unless @@logger
  6.     @@logger
  7.   end
  8. end
  9. log1 = MyLogger.create
  10. log2 = MyLogger.create
  11. if log1 == log2
  12.   puts "same"
  13. else
  14.   puts "different"
  15. end

运行后输出:same

可以作如下的测试:

  1. class MyLogger
  2.   #private_class_method :new
  3.   @@logger = nil
  4.   def MyLogger.create
  5.     @@logger = new unless @@logger
  6.     @@logger
  7.   end
  8. end
  9. #log1 = MyLogger.create
  10. #log2 = MyLogger.create
  11. log1 = MyLogger.new
  12. log2 = MyLogger.new
  13. if log1 == log2
  14.   puts "same"
  15. else
  16.   puts "different"
  17. end

输出:different

原创粉丝点击