我來自Java世界,其中基於無狀態服務的系統非常流行。 在Ruby世界中,它不是那麼受歡迎,我找不到任何答案,如何做到這一點。Ruby應用程序中的無狀態服務和每次創建新實例
說我需要CRUD服務來存儲訂單。它是純粹的無狀態的,沒有實例變量,只是像create
,read
等方法。我想知道每次我想使用它時是否應該創建它的新實例?在Spring或Guice的java中,您可以同時使用一個實例。
我能想到的下列方式每次
class OrderRepository
def create(order)
..
end
end
以實施
1)普通班,並呼籲OrderRepository.new
2)類方法和調用OrderRepository.create
(不好聽)
class OrderRepository
def self.create(order)
..
end
end
3)模塊,而不是類
在這種情況下哪一個更可取?
好吧,讓我們暫且留下簡單的CRUD,假設我需要定期從MongoDB中獲取一些'Document'對象,並將它們放入隊列以讓其他系統逐一處理它們。在Java中,我會創建'Scheduler'來定期運行,它會使用'DocumentsRepository'從MongoDB和'DocumentsToQueueSender'中獲取數據,以便將獲取的文檔放入隊列中。這些都是無國籍的服務。你會如何在Ruby中實現上面的東西? – grafthez 2013-03-05 20:30:31
在紅寶石般的土地上,你可能會使用Rails,但是Rails非常重量級,並不是每個人都喜歡它的功能 - 有些人可能不想成爲下一個Rails啓示錄的一部分(http://labs.headshift.com/2012/03/07 /上軌質量,分配,GitHub的和最現代啓示錄/)。建立自己的DAL沒什麼問題,我曾經參加過這樣的團隊 - 這很複雜,但我們確實得到了我們想要的,而我們卻沒有做到。 – philosodad 2013-03-05 20:46:06
如果您更改與剛剛給出的示例有關的問題,這將對您有所幫助,以便人們可以真正幫助您。從你寫的東西我不認爲我可以幫你。 – phoet 2013-03-06 10:00:05