2010-10-28 18 views
6

में पर्यवेक्षक पैटर्न को लागू करने का सबसे अच्छा तरीका मुझे डेल्फी में पर्यवेक्षक पैटर्न के विभिन्न कार्यान्वयन मिले, जैसे: Sourcemaking Design Patterns और Delphi Hobbyistडेल्फी

सामान्य रूप से, डेल्फी में पर्यवेक्षक को लागू करने का सबसे अच्छा तरीका क्या है?
मैं इंटरफेस का उपयोग करके कहूंगा क्योंकि कोड अधिक पठनीय है। स्रोत कोड के साथ

+0

इंटरफेस इतना नहीं है क्योंकि कोड अधिक पठनीय हो जाता है, लेकिन क्योंकि कोड बन जाता है/अधिक decoupled है। –

+0

आसान रखने के लिए यहां एक और कार्यान्वयन है: http://blogs.teamb.com/joannacarter/2004/06/30/690 –

उत्तर

7

कोई "अच्छा" या "सर्वश्रेष्ठ" पैटर्न लागू करने के लिए तरीका है।
आपके द्वारा चुने गए कार्यान्वयन इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे करना चाहते हैं।

उदाहरण के लिए आप कई पैटर्न के उपयोग को सरल बनाने के लिए जेनरिक फीचर (डेल्फी 200 9 से उपलब्ध) का भी उपयोग कर सकते हैं।

और यदि आप प्री डेल्फी -3 संस्करणों का उपयोग करते हैं, या reference counting से बचना चाहते हैं तो आप इंटरफेस का उपयोग नहीं कर सकते हैं।
(परंपरागत मालिक/स्वामित्व आधारित जीवन समय प्रबंधन के साथ मिश्रित होने पर संदर्भ गिनती कीड़े का एक नया प्रकार खोल सकता है; दाएं पूर्वजों से इंटरफेस का पर्दाफाश करने वाले वर्गों को छोड़ना सुनिश्चित करें - जैसे TInterfacedObject - और अपना जीवन समय प्रबंधन देखें)।

पर्यवेक्षक पैटर्न को कार्यान्वित करने के तरीके पर "शुद्ध" प्रश्न के अलावा, यह भी अच्छा है कि पर्यवेक्षक पैटर्न को लागू करने वाले डेल्फी में कक्षाएं पहचानने में सक्षम होना भी अच्छा है।

उदाहरण के लिए TDataSet/TDataSource भी observer pattern लागू करता है।
Data Aware Controls की पूरी अवधारणा इस पर निर्भर करती है, सभी TDataLink से गुजरती हैं।

मैं एक TDataLinkReflector घटक TDataLink के आधार पर है, जो TDataLinkReflector में घटनाओं के लिए TDataLink में सभी आभासी तरीकों को दर्शाता है लिखा है। TDataLinkReflector पर

बेस मैं TDataAwareControlController घटक है कि डाटा वाकिफ TDataSet, अपने TFields और TDataSource TDataSet को जोड़ने के आधार पर नियंत्रण करने के लिए दिलचस्प बातें की सभी प्रकार करता है लिखा था (आदि पर रंग केवल पढ़ने के लिए, की आवश्यकता है,)।

लेकिन घटनाओं की तरह एक प्रतीत होता है कि साधारण घटना भी उस पैटर्न के आधार पर देखी जा सकती है (हालांकि घटनाएं एकल कलाकार हैं, इसलिए केवल एक पर्यवेक्षक एक घटना देख सकता है)।

यह लागू करने वाला एक और वर्ग TApplicationEvents है; प्रत्येक उदाहरण आपको टीएप्लिकेशन पर किसी भी घटना को सुनने देता है।

मुझे आशा है कि डेल्फी में पर्यवेक्षक पैटर्न का उपयोग करने पर कुछ प्रकाश डाला जाए।

--jeroen

पुनश्च: किसी को भी घटकों मैंने लिखा CodeRage video mentioned here को देखने के लिए चाहते हो सकता है में रुचि रखते।

+0

धन्यवाद, बहुत ही जानकारीपूर्ण उत्तर। – LaBracca