这间共享的方法是我的尝试:如何红宝石模块
module A
def self.method1; "method1"; end
def method2; "method2"; end
end
module B; include A; end
B.method1 # => error
B.method2 # => error
B::method1 # => error
B::method2 # => error
我想避免复制和粘贴两个模块之间的等效代码。我在这里使用模块而不是类的原因是因为我不需要每个模块的多个实例,因为它们只是保存常量(此时为其他模块)。
解决此问题的最佳方法是什么?
如果您只想要此代码的一个实例,为什么不使用单例? –
主要是因为我不知道该解决方案的优缺点。有些人甚至说他们是邪恶的,而另一些人似乎认为他们是好的。你怎么看? – benekastah
正确使用它们可能会有所帮助,但我不确定您的使用情况,所以我无法确定。 –