मैं साधारण समस्या के बारे में सोच रहा हूं। मैं उदाहरण के लिए एक वर्ग दे दिया है Model
कक्षा वस्तु को परिपत्र संदर्भों के साथ कैसे संभालें?
class Model {
constructor(parameters = {}) {
this.id = parameters.id;
}
}
इतनी के रूप में आप देख सकते हैं हम जैसे नए Model
वस्तुओं बना सकते हैं: let model = new Model()
। अधिक जटिल उदाहरण इस प्रकार दिखाई देगा:
//we have some data given from API maybe?
let parameters = {id: 1};
let model = new Model(parameters);
और यहाँ हम बात कर रहे हैं जहां मैं भटकने के लिए क्या होगा अगर दिया id
के साथ वस्तु पहले से ही मौजूद है शुरू कर दिया?
प्रश्न है id
दिए गए ऑब्जेक्ट को तुरंत चालू करने के लिए मुझे किस पैटर्न का उपयोग करना चाहिए?
चलो आगे बढ़ें: क्या होगा यदि हमें सर्किल संदर्भ के साथ नेस्टेड ऑब्जेक्ट मिलेगा? चलो मान लेते हैं कि हम किसी अन्य वर्ग AnotherModel
बुलाया गया और हमारे कोड लगता है:
class Model {
constructor(parameters = {}) {
this.id = parameters.id;
this.anotherModel= nulld;
if (parameters.anotherModel) {
this.anotherModel= parameters.anotherModel instanceof AnotherModel
? parameters.anotherModel
: new AnotherModel(parameters.anotherModel);
}
}
}
class AnotherModel {
constructor(parameters = {}) {
this.id = parameters.id;
this.models = [];
if (parameters.models) {
for (let i = 0; i < parameters.models.length; i++) {
let model = parameters.models[i];
model.anotherModel= this;
this.models.push(new Model(model));
}
}
}
}
तो AnotherModel
Model
रों का संग्रह होता और Model
वस्तु AnotherModel
लिए संदर्भ है।
इस समस्या को हल करने के लिए अच्छा तरीका क्या है? हम जो हासिल करना चाहते हैं वह एक ही आईडी के साथ केवल एक वस्तु है।
जो मैं सोच रहा था वह किसी प्रकार का ऑब्जेक्टपूल करना है जहां मैं दिए गए वर्ग या कक्षाओं के लिए सभी ऑब्जेक्ट्स स्टोर करूंगा और जब नई ऑब्जेक्ट को तुरंत चालू किया जाएगा तो हमारा पूल एक नया बना देगा यदि यह अस्तित्व में नहीं है या मौजूदा को वापस कर रहा है?
लेकिन यहां थोड़ी सी हानि है, उदाहरण के लिए हमने पहले से ही कुछ कोड लिखा है, हमें new Model()
से ObjectPool.get(Model, parameters)
से उन्हें पुन: सक्रिय करने और बदलने के तरीके को बदलना होगा?
आपके विचार क्या हैं?
ऊपर अपने परिदृश्य में, की 'AnotherModel' पहले बनाई गई एक उदाहरण है?या 'मॉडल' और 'अन्य मॉडेल' दोनों के उदाहरण व्यक्तिगत रूप से बनाए जा सकते हैं? मुझे यकीन नहीं है कि क्या मैं समझता हूं कि आपके कोड को किस तरह से काम करना चाहिए। – nils
व्यक्तिगत रूप से, इससे कोई फर्क नहीं पड़ता कि हम पहले 'अन्य मॉडेल' या 'मॉडल' – Vardius
बनाते हैं, मुझे खेद है कि यह एक बेवकूफ सवाल है, लेकिन क्या दोनों घटकों के लिए एक दूसरे के संदर्भ में रखना आवश्यक है? विशेष रूप से यह लाइन मुझे थोड़ा समझ में नहीं आती है: ': नया एल्डमोडेल (पैरामीटर.नॉदरमोडेल); '(' मॉडल 'में गुजरने के बिना मॉडल से' अन्य मॉडेल 'बनाना) – nils