इस प्रकार एक वर्ग पदानुक्रम को देखते हुए:अभिभावक वर्ग शुरू करते समय सबक्लास के नए उदाहरण को कैसे वापस करें?
class A
def initialize(param)
if param == 1 then
#initialize and return instance of B
else
#initialize and return instance of C
end
end
end
class B < A
end
class C < A
end
यह वास्तव में प्रारंभ और B
या C
का एक उदाहरण वापस जाने के लिए संभव है जब A
आरंभ? अर्थात। my_obj = A.new(param)
param
के मान के आधार पर के मूल्य के आधार पर B
या C
का उदाहरण होने के परिणामस्वरूप my_obj
होगा।
मेरी USECASE में इसकी केवल क्रम जो उपवर्ग (B
या C
) का उपयोग करने और माता पिता के वर्ग (A
) में जाना जाता है मूल रूप से वास्तव में कभी नहीं किया जाता है। मैंने सोचा कि B
या C
अपने सामान्य पूर्वजों में यह तय करने के तर्क को स्थानांतरित करना एक अच्छा विचार हो सकता है।
यदि यह संभव नहीं है (या खराब शैली), तो मुझे param
और किस वर्ग को प्रारंभ करने का निर्णय रखना चाहिए?
इसी तरह के प्रश्नों का उत्तर पहले दिया गया है।आप जो खोज रहे हैं वह कारखाने के तरीके हैं। Http://stackoverflow.com/questions/1515577/factory-methods-in-ruby पर एक नज़र डालें, मुझे लगता है कि http://stackoverflow.com/a/1515580/1128705 पर उत्तर आपकी आवश्यकताओं के अनुरूप होगा। –