我发现我有很多场合,我有一个通常需要实例化为“集合”的类。我的解决方案一直是这样做的:类是使用类方法来“管理”自身实例的好习惯吗?
class Foo
attr_accessor :bar
def initialize bar
@bar = bar
end
end
class FooCollection
attr_accessor :foos
def initialize
(0.10).each {|n| @foos[n] = Foo.new(n)}
@coolest = 3
end
def coolest
@foos[@coolest]
end
end
我曾考虑过使用这种类型的行为类方法。我似乎无法下定决心要做到这一点是否更清洁或更混乱。
class Foo
attr_accessor :bar
@@all = []
def self.create_all
(0.10).each {|n| @@all[n] = Foo.new(n)}
@@coolest = 3
end
def self.coolest
@@all[@@coolest]
end
def initialize bar
@bar = bar
end
end
我知道使用类方法创建了它是一个单身的问题,所以如果我需要让富的多个集合我可能必须进行收集阵列或东西的哈希值。但是,实际上,这些解决方案对我来说都不是“干净”的,如果是这种情况,通常会有更好的选择,我不知道。有一个吗?
这可能有助于使用实际场景,因为我无法真正关注您的foobar代码。 – 2011-05-23 02:47:23
嗯,我是一个新手,但我认为这将是一个简单的例子。它只是创建了10个对象的集合,并且具有对象本身无法知道的某种指定。在这种情况下,我选择了“最酷”。 – 2011-05-23 15:54:08