मुझे ज़िम्मेदारी की श्रृंखला का उपयोग करने की आवश्यकता क्यों है, अगर मैं कुछ कमांडर को सभी कंटेनर में लोड कर सकता हूं और केवल एक-एक करके आदेश निष्पादित कर सकता हूं। यह एक पंक्ति में एक अनुरोध संसाधित करने की एक श्रृंखला बना देगा। बीटीडब्ल्यू मुझे लगता है कि यह सीओआर से बेहतर है क्योंकि आप कुछ विशेष आदेशों को हटा सकते हैं या रनटाइम पर किसी अन्य कमांड के साथ प्रतिस्थापित कर सकते हैं, जबकि सीओआर के लिए आपको श्रृंखला में कुछ बदलने के लिए एक और श्रृंखला बनाने की आवश्यकता है क्योंकि आपके पास तत्वों तक पहुंच नहीं है पहले तत्व को छोड़कर श्रृंखला। (यह वास्तव में एक भी लिंक्ड सूची है।)उत्तरदायित्व की श्रृंखला एक कतार या स्टैक में कमांड
उत्तर
बस "इसे सरल रखें मूर्खतापूर्ण" करने के लिए :-)
एक कतार/स्टैक बनाएं जब आप विशेष रूप से इसकी जरूरत है, और आप को पता होगा कि जब आपको उसकी आवश्यकता , है ना?
उदाहरण के लिए अगर आप की तरह कुछ सरल डेटा हेरफेर करना था:
data.clean().format().save();
बनाम
commands.push(new Cleaner(data));
commands.push(new Formatter(data));
commands.push(new Updates(data));
commands.execute();
भी नोटिस, मैं नया डेटा संरचना बनाने के लिए अधिक कोड लिखना पड़ा (आज्ञा ढेर)।
लेकिन कहें कि यह कुछ और रणनीतिक है, एक शूटर गेम कहें। खिलाड़ी को गोली मार दी जा सकती है, मार डाला जा सकता है, आदि, और परिणाम खेल के चुनिंदा कठिनाई स्तर पर निर्भर करते हैं।
headShot = new Command();
headShot.push(new FreezePlayer());
headShot.push(new BleedPlayer());
headShot.push(new KillPlayer());
bodyShot = new Command();
headShot.push(new FreezePlayer());
headShot.push(new BleedPlayer());
headShot.push(new LooseHealth());
player.onHit = function(hitPoint){
hitPoint.aboveNeck() ? headShot.on(this) : bodyShot.on(this);
};
इस मामले में ध्यान दें, हमें एक ऐसी रणनीति तैयार करनी है जिसे रनटाइम पर पास किया जा सके और हो।
तो जब आसान मोड में, बॉडीशॉट में अंतिम तत्व (लूजहेल्थ) नहीं हो सकता है, और हेडशॉट में अंतिम तत्व के रूप में किलप्लेयर के बजाय लूजहेल्थ हो सकता है।
उम्मीद है कि यह मदद करता है।
मुझे नहीं लगता कि कोआर को एकल-लिंक्ड सूची की आवश्यकता है। यह एक आम कार्यान्वयन हो सकता है; लेकिन एक दोगुनी-लिंक्ड सूची या लगभग किसी भी अन्य संग्रह/कंटेनर का उपयोग किया जा सकता है, जब तक यह संदेश प्रेषक को संदेश प्राप्तकर्ता से हटा देता है। जो आप वर्णन करते हैं वह CoR पैटर्न के साथ पूरी तरह से संगत लगता है। आपने चेन को कॉन्फ़िगर करने की क्षमता को बढ़ाया है। यह ध्यान रखें कि GoF definition हमें निर्देश देता चेन लागू करने के लिए,
कड़ी मेहनत से तारों हैंडलर रिश्ते और पूर्वता के बिना,
महत्वपूर्ण है ... लेकिन मुझे नहीं लगता है कि के बारे में हमारी पसंद को प्रतिबंधित करना चाहिए हैंडलर के लिए संग्रह।
यह भी ध्यान दें कि जिम्मेदारी की श्रृंखला प्रसंस्करण की श्रृंखला के समान नहीं है। उत्तरार्द्ध अनुक्रमिक संचालन का अर्थ है (यानी pipeline) जबकि पूर्व श्रेणीबद्ध है लेकिन आवश्यक अनुक्रमिक नहीं है। हैंडलर (या उनमें से कोई भी) का कोई भी नंबर और संयोजन एक अनुरोध पर कार्य नहीं कर सकता है।
अंत में, मुझे लगता है कि प्रश्न में "आदेश" शब्द का उपयोग चेन में हैंडलर का संदर्भ है, और Command Pattern का संदर्भ नहीं है। सीओआर और कमांड पैटर्न चेन के अनुरोधों के संदर्भ में पूरक हो सकते हैं, लेकिन परंपरागत रूप से कमांडरों के रूप में कमांडरों के मामले में नहीं।
- 1. अलार्म इतिहास स्टैक या कतार?
- 2. उत्तरदायित्व डिजाइन पैटर्न की श्रृंखला के विकल्प क्या हैं?
- 3. कमांड विंडो प्रक्रिया में कमांड की श्रृंखला कैसे भेजें?
- 4. सेलेरी में एक विशिष्ट कतार में कार्यों की एक श्रृंखला को कैसे रूट किया जाए?
- 5. कतार एक इंटरफ़ेस है जबकि कक्षा एक स्टैक क्यों है?
- 6. CLLocationManager उत्तरदायित्व
- 7. ओपनसीएल घटनाक्रम और कमांड कतार
- 8. अनुक्रम में खेलने के लिए ध्वनि एचटीएमएलध्वनि क्लिप की एक श्रृंखला कतार कैसे कर सकता हूं?
- 9. एक श्रृंखला में एक सूची को एक श्रृंखला
- 10. सी ++ डेक बनाम कतार बनाम स्टैक
- 11. माइक्रोसॉफ्ट संदेश कतार - प्राथमिकता झंडा या एक अलग कतार?
- 12. एकल उत्तरदायित्व और निर्भरता
- 13. एक वसंत सेम संदर्भ में ऑब्जेक्ट की श्रृंखला की घोषणा
- 14. एकल उत्तरदायित्व और मिक्सिन
- 15. स्टैक या कतार के लिए एक शाब्दिक प्रारंभिक निर्दिष्ट कैसे करें?
- 16. सूची की शुरुआत में आइटमों की एक श्रृंखला जोड़ें?
- 17. संदेश कतार या शेड्यूलर
- 18. एक पर्यवेक्षण योग्यता में मूल्यों की एक श्रृंखला को कुशलतापूर्वक
- 19. डिस्क पर लागू फीफो कतार (या स्टैक), रैम नहीं (अधिमानतः सी ++ में)
- 20. चेन अतुल्यकालिक की एक श्रृंखला कॉल
- 21. AS3 चर या पूर्वनिर्धारित में 5287 की स्टैक सीमा है?
- 22. एक श्रृंखला
- 23. एक कतार
- 24. एकल उत्तरदायित्व सिद्धांत को समझने में सहायता
- 25. पावरपॉइंट लूप एनीमेशन की एक श्रृंखला
- 26. एक कतार
- 27. स्टैक ओवरफ़्लो या क्वारा
- 28. सीएसवी फाइलों की एक श्रृंखला की पंक्तियों की संख्या
- 29. मैं एक फ़ंक्शन टेम्पलेट कैसे लिख सकता हूं जो या तो स्टैक या कतार स्वीकार कर सकता है?
- 30. इंटरप्ट्स की पूंछ-श्रृंखला
कौन सा आसान है? सीओआर या ढेर? मेरे लिए दोनों एक ही sh * टी हैं। – Narek
ठीक है, – Nishant
से ऊपर संपादित उत्तर देखें आपने स्थिर 'data.clean()। प्रारूप() सेव() को सहेज लिया है। लेकिन मैं स्टैक बनाम सीओआर से पूछ रहा था, क्योंकि रनटाइम परिवर्तन दोनों में किया जा सकता है, क्योंकि सीओआर में आप नई श्रृंखला बना सकते हैं। – Narek