design patterns अभिनेता पैटर्न-यह वास्तव में क्या बनाता है



design-patterns actor (1)

मैं कुछ उद्देश्य-सी / आईओएस विकास कर रहा हूं और अभिनेता पैटर्न के कई संदर्भ सुन चुके हैं। बिग नेर्ड रांच पुस्तक में, यह कहता है:

एक अभिनेता ऑब्जेक्ट का उपयोग तब किया जाता है जब आपके पास लंबे समय तक चलने वाला कार्य होता है और कुछ कोड जिसे पूरा होने के बाद निष्पादित करने की आवश्यकता होती है। इस तरह के ऑब्जेक्ट को उस कार्य को निष्पादित करने के लिए कार्य और कॉलबैक निष्पादित करने के लिए आवश्यक जानकारी दी जाती है। अभिनेता बिना किसी इनपुट के अपने धागे पर चलता है और इसे समाप्त होने पर नष्ट कर दिया जाता है।

यहां अभिनेता का उपयोग नेटवर्क कॉल के साथ किया जाता है। क्या यह मुख्य रूप से अभिनेता का उपयोग किया जाता है? क्या यह परस्पर अनन्य या प्रतिनिधिमंडल के लिए मानार्थ है? अभिनेता की परिभाषा बहुत व्यापक लगती है और मैं इसका अर्थ क्या बेहतर तरीके से संभालने की कोशिश कर रहा हूं। साथ ही, गैर-ओओ पर्यावरण में एक अभिनेता होना संभव है?


एक अभिनेता की परिभाषा वास्तव में थोड़ा सा प्रतिबंधक लगता है। यह निश्चित रूप से एरलांग-स्टाइल अभिनेताओं को संभालने में सक्षम नहीं है (या मुझे स्कैला-स्टाइल अभिनेता मानते हैं)। मेरे अनुभव में, एक अभिनेता ऐसा कुछ है जो:

  • संदेश भेजता है और प्राप्त करता है (प्रत्येक अभिनेता के पास मेलबॉक्स होता है)
  • अन्य अभिनेताओं के साथ कोई परिवर्तनीय स्मृति साझा नहीं करता है
  • रनटाइम की सनकी पर आधारित है। एक अभिनेता को अपना धागा दिया जा सकता है, लेकिन यह अधिक संभावना है कि कई कलाकार एकल थ्रेड में सहकारी मल्टीथ्रेडिंग में भाग लेते हैं, या शायद पूर्व-खाली मल्टीथ्रेडिंग में भाग ले सकते हैं।

लेकिन मूल रूप से, एक अभिनेता कोड का एक मुक्त चल रहा हिस्सा है जो अपने पर्यावरण से संदेश प्राप्त कर सकता है और अपने पर्यावरण को संदेश भेज सकता है।

अभिनेताओं का उपयोग किसी भी समय किया जाता है जब आपको राज्य की छोटी प्रक्रियाओं के बहुत सारे (और बहुत) की आवश्यकता होती है। नेटवर्किंग एक आम उपयोग केस है, क्योंकि आप प्रत्येक कनेक्शन में एक पूरा धागा आवंटित नहीं करना चाहते हैं। आप कुछ हल्का वजन चाहते हैं, इसलिए आप प्रत्येक कनेक्शन के लिए एक अभिनेता आवंटित करते हैं, और फिर अभिनेताओं को धागे के छोटे पूल पर शेड्यूल करते हैं। लेकिन नेटवर्किंग निश्चित रूप से एक अभिनेता का एकमात्र उपयोग नहीं है।

एरलांग में, एक अभिनेता एक समारोह है। फ़ंक्शन शायद पूंछ-कॉल स्वयं (इसलिए यह मूल रूप से एक अनंत लूप है), और संभवतः इसे स्वयं-समाप्त करने का एक साफ तरीका है (अनंत लूप में "ब्रेक" स्थिति है)। लूप आमतौर पर सिस्टम से एक संदेश की प्रतीक्षा करता है, इसे संसाधित करता है, और फिर शेष सिस्टम को संदेश भेजता है। एर्लांग ओटीपी लाइब्रेरी में कुछ अमूर्तताएं हैं जो लूप को लिखने की आवश्यकता को खत्म करती हैं, इसलिए ओटीपी अभिनेता को कॉलबैक के सेट के रूप में लागू किया जाता है। इस तरह, एक ओटीपी अभिनेता एक वस्तु की तरह दिखता है।





actor