【发布时间】:2015-11-17 16:39:28
【问题描述】:
当我实现“instance of”/singleton 类型模式时,RubyMine 通知说使用类变量被认为是错误的形式。
我遇到的唯一信息是使用类变量会使继承有点松散。以下代码会给我带来问题还有其他原因吗?
class Settings
private_class_method :new
attr_accessor :prop1
attr_accessor :prop2
@@instance = nil
def Settings.instance_of
@@instance = new unless @@instance
@@instance
end
def initialize
@prop2 = "random"
end
end
另外,有没有更好的方法,Ruby-wise,来实现相同的目标,以确保只有一个实例?
【问题讨论】:
-
方法体
Settings.instance_of可以简化为@@instance ||= new。 -
你在这里问两个不同的问题:(1)类变量的使用不好(你的问题标题)?以及(2)如何创建单实例类(你的问题内容)?我引用了处理单实例想法的链接。但是你所拥有的并不是一个使用类变量的坏例子,它们也不是总是坏的。他们只是在大多数时候被滥用。我不会将您的示例归类为“滥用”。 :) 另一个使用类变量的相关示例可能是实例计数。
-
这篇在 Practicing Ruby Ruby and the singleton pattern don't get along 上的文章对我来说是非常宝贵的参考。
-
哇,感谢您的所有反馈 - 而且速度如此之快。我会阅读链接。另外,感谢@lurker 提供详细信息