Design Patterns in Ruby [Digest 10] Singleton

本文探讨了在Ruby中实现单例模式的多种方式,包括使用模块、类变量和全局变量等,并讨论了这些方法的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Singleton is common for every coder. It provide only instance of class.

 

 

class SimpleLogger
	# Lots of code deleted...
	@@instance = SimpleLogger.new
	def self.instance
		return @@instance
	end
	
	private_class_method :new
end

  

 

In ruby we can use Singleton Module, it is lazy instantiation

 

require 'singleton'
class SimpleLogger
  include Singleton
  # Lots of code deleted...
end

 

And we can use to implement eager instantiation

 

class SimpleLogger
  # Lots of code deleted...
  @@instance = SimpleLogger.new
  # Lots of code deleted...
end

 

There are some other way to implement the singleton pattern:

$logger = SimpleLogger.new

 or

Logger = SimpleLogger.new

 

The deficiencies are as below:

First, if you use a global variable or a constant for this purpose, there is no way to delay the creation of the singleton object until you need it. The global variable or constant is there from the moment we first set it.

Second, neither of these techniques does anything to prevent someone from creating a second or third instance of your supposedly singleton class.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值