关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
7年前关闭。
Improve this question
我一直在为一些第三方产品 DB API 开发 Ruby 包装器。
API 是 REST 式的,具有产品、类别、公司、事件等模型,以及 API 端点,如 /api/Product.getInfo
.
我的方法是使用 API 调用包装器和方便的方法为这些 API 模型创建相应的 Ruby 类。
所有这些模型类共享同一个父类 Base,它抽象了 API 调用并具有其他共同特征。
这些 API 模型之间有很多相似之处。例如,产品、公司和事件模型可以被标记,因此有一组用于标记的 API 调用,例如 createTag
, deleteTag
, getTags
,并且,为了抽象标记功能,我创建了 Taggable
模块并将其包含在这三个模型中。
现在,问题是,有两个主要 API 调用的“审查”功能 - createReview
和 getReviews
,在 Product、Event、Company 和其他一些模型之间共享(为简单起见省略);但是,只有产品和事件模型同时支持 createRiview
和 getReviews
,其余只支持getReviews
.
然后我认为有两个模块会很好 - Reviewable
和 WithReviews
前者(读/写)“继承”后者(只读),但显然,Ruby 不支持子模块化。
我现在应该怎么办?
Reviewable
)并在产品和事件模型中包含这两个模块吗? WithReviews
(只读)创建 Reviewable
(读/写)? 另外,您如何看待我的模块命名?
喜欢,
我认为前两个 -able 听起来不错,但是有没有更好的方法或约定来命名只读版本?
如果我必须创建一个,您对 WRITE-ONLY 模块命名有什么建议吗?
谢谢!!
萨基=D
最佳答案
您可以只在模块 Reviewable 中包含模块 WithReviews。
module WithReviews
def getReviews;end
end
module Reviewable
include WithReviews
def createReview;end
end
关于ruby - 我如何 "Inherit"一个 Ruby 模块来创建另一个模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20205414/