在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
方法來添加和獲取數據。由于單例模式只允許創建一個實例,因此這些方法在所有線程之間共享,從而保證了數據一致性。