İki yapım yönteminden birine dayalı olarak yeni bir örnek oluşturmak için fabrika yöntemlerini kullanmak istediğim bir sınıfa sahibim: ya bellekte verilerden oluşturulabilir, veya bir dosyada saklanan veriler. Ben yapmak istiyorum neRuby'de sınıf statik örnek başlatıcıları (yani fabrika yöntemleri)
inşaat sınıfı içinde yapılır nasıl mantığını saklanması, bu yüzden bu kadarını statik sınıf yöntemleri var istiyorum:
class MyAppModel
def initialize
#Absolutely nothing here - instances are not constructed externally with MyAppModel.new
end
def self.construct_from_some_other_object otherObject
inst = MyAppModel.new
inst.instance_variable_set("@some_non_published_var", otherObject.foo)
return inst
end
def self.construct_from_file file
inst = MyAppModel.new
inst.instance_variable_set("@some_non_published_var", get_it_from_file(file))
return inst
end
end
var mı some_private_var'ı sınıfın kendisinden metaprogramlamaya (instance_variable_set) başvurmadan bir sınıfın örneğinde ayarlamanın yolu yok mu? Görünüşe göre, bu model örneklere meta-poking değişkenlerini gerektirecek kadar ezoterik değildir. MyAppModel'in dışındaki herhangi bir sınıfın bazı_published_var'a erişmesine izin vermeyi gerçekten istemiyorum, bu yüzden e.g. attr_accessor - sadece bir şeyleri kaçırdığım gibi hissettiriyor ...
Bu çok güzel ve deyimseldir. – Chuck
Teşekkürler, bu benim yaptığımdan çok daha temiz olduğunu düşünüyorum - yine de bir sürü şeyi yapıcıya aktarmayı içeriyor, ama yine de korunduğundan beri, bu büyük bir anlaşma değil - ve örnek_variable_set'den çok daha iyi. – Matt