2011-04-22 135 views
1

我有一個庫存和一個倉庫模型。還有一個User和OwnedItem模型。 OwnedItem對於庫存和倉庫是多態的,因此倉庫或庫存可以擁有特定用戶的擁有物品。模塊或繼承?

現在,倉庫和庫存具有一定的相似性。例如,他們以非常相似的方式處理插槽。爲了說明這是我創建的庫存函數:

def empty_slots_count 
    self.max_slots - self.owned_items.inventory.count 
end 

這一個返回庫存的空插槽編號。這個功能對倉庫來說幾乎是一樣的(與.inventory部分相同)。所以,現在我想知道模塊是否適用於此。

儘管模塊可能沒問題,但它並不太自然。如果我在C++中這樣做,我肯定會使用繼承。我可能會有另一個類,可能會命名爲SlotManager,它可以處理這個問題,而我的Inventory類會繼承並使用它。

但是,Ruby不支持多重繼承(只有mixins?真的不知道多少)。所以我想問一下,什麼是一個好方法?當然,我願意學習新的東西:)

回答

2

儘管模塊可能沒問題,但並不是 覺得太自然了。

我想說,對於大多數Rubyists來說,它確實感覺很自然。在Ruby中,構建複雜的層次鏈,​​抽象類和所有這些並不常見。相反,常見的功能被包裝在一個模塊中,幷包含在需要的地方。如果我沒有記錯,Russ Olson的「雄辯的Ruby」以相當不錯的方式對待這整個話題,並且通常是一本我不能推薦給有抱負的Ruby開發人員的書。

在網絡上有混入了不少好文章,讓你開始,我只是給你相關鏈接「鎬」:

http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html

+0

哦,我不知道一個模塊是一個標準的做法。有趣的是,我會做那個thanx! – Spyros 2011-04-22 19:35:18

1

Ruby有一些很好的支持代表團。如果您的模塊想要存儲狀態信息,您可能需要使用它。