gpt4 book ai didi

ruby-on-rails - 模块还是继承?

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:32 26 4
gpt4 key购买 nike

我有一个库存和一个仓库模型。还有一个 User 和 OwnedItem 模型。 OwnedItem 对库存和仓库具有多态性,因此仓库或库存可以为特定用户拥有一个拥有的项目。

现在,仓库和库存有某些相似之处。例如,它们以非常相似的方式处理插槽。为了说明,这是我创建的库存功能:

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

这个返回库存的空槽数。这个功能对于仓库来说几乎是一样的(与 .inventory 部分的期望相同)。所以,现在我想知道模块是否适用于此。

虽然一个模块可能还可以,但感觉不太自然。如果我在 C++ 中这样做,我肯定会使用继承。我可能会有另一个类,可能命名为 SlotManager 之类的东西来处理这个,我的 Inventory 类将继承它并使用它。

但是Ruby不支持多重继承(只支持mixins?不太了解)。所以我想问一下,什么是好的方法?当然,我愿意研究新事物:)

最佳答案

Though a module may be ok, it does not feel too natural.

我想说,对于大多数 Ruby 开发者来说,它确实感觉很自然。在 Ruby 中,构建复杂的层次结构链、抽象类等等并不常见。相反,通用功能被包裹在一个模块中,并在需要的地方包含。如果我没记错的话,Russ Olson 的“Eloquent Ruby”以一种相当不错的方式处理了整个主题,并且通常是一本书,我不能向有抱负的 Ruby 开发人员推荐足够多的书。

网上有很多关于mixins的好文章可以帮助你入门,我只给你“镐”的相关链接:

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

关于ruby-on-rails - 模块还是继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5753782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com