在Ruby中,单例模式可以通过使用类变量和类方法来确保数据一致性。以下是一个简单的Ruby单例模式实现,展示了如何保证数据一致性:
class Singleton
@@instance = nil
def self.instance
return @@instance if @@instance
# 使用锁来确保只有一个线程可以创建实例
lock = Mutex.new
lock.synchronize do
return @@instance if @@instance
# 创建实例并存储在类变量中
@@instance = new
end
end
def initialize
@data = {}
end
def add_data(key, value)
@data[key] = value
end
def get_data(key)
@data[key]
end
end
在这个例子中,我们使用了一个类变量@@instance
来存储唯一的实例。instance
方法首先检查@@instance
是否已经存在,如果存在则直接返回。如果不存在,我们使用Mutex
来确保在同一时间只有一个线程可以创建实例。这样可以避免多个线程同时创建实例,从而保证数据一致性。
在实例创建后,我们可以使用add_data
和get_data
方法来添加和获取数据。由于单例模式只允许创建一个实例,因此这些方法在所有线程之间共享,从而保证了数据一致性。