在我正在開發的Rails應用程序中,我有許多「請求」模型。我們使用了很多Web服務,並且我們對這些服務有很多不同的請求,每個服務都有自己的邏輯(主要是驗證)。因此,他們都模塊作爲命名空間中進行分組:作爲名稱空間和mixin的Ruby模塊
module Request
end
所以現在每一個要求是一樣的東西:
class Request::SendSomeData
end
到目前爲止,一切都很好......問題是,我們將有一個很多這樣的請求會分享一些共同的邏輯。這是很容易包括模塊
class Request::SendSomeData
include Request
end
......(所以它同時充當一個命名空間和一個mixin),但我想知道是否有辦法使它不包括(因爲它要是某種代碼重複)。
有沒有一種方法讓Ruby將一些實例方法放入模塊名稱空間中的所有類中,而無需明確包含模塊?
換句話說,我能有這樣的事情:
module Request
def someMethod
end
end
和
class Request::SendSomeData
end
,並能夠使用
Request::SendSomeData.new.someMethod
在同一時間?
你有沒有考慮通過繼承來繼承? – 2012-04-06 09:22:00
其實是的。這就像「它不是很酷」:)。如果有一些沒有那麼「傻瓜」的方式,我更喜歡另一種方式。閱讀源代碼時,命名空間看起來更可讀。 – 2012-04-06 09:32:49