ऐसी प्रोजेक्ट पर काम करना जो घटनाओं का एक लॉग पार्स करता है, और उसके बाद उन घटनाओं के गुणों के आधार पर मॉडल अद्यतन करता है। मैं "इसे पूरा करने" के बारे में बहुत आलसी रहा हूं और अग्रिम अनुकूलन, दुबला कोड और उचित डिज़ाइन पैटर्न के बारे में अधिक चिंतित हूं। ज्यादातर आत्म-शिक्षण प्रयोग। मुझे दिलचस्पी है कि कौन से पैटर्न अधिक अनुभवी डिजाइनर सोचते हैं प्रासंगिक हैं, या किस प्रकार का छद्म वस्तु ऑब्जेक्ट आर्किटेक्चर सबसे अच्छा, बनाए रखने के लिए सबसे आसान और आसान होगा।किसी ईवेंट लॉग पार्सर के लिए उपयुक्त डिज़ाइन पैटर्न?
एक ही लॉग में 500,000 घटनाएं हो सकती हैं, और लगभग 60 प्रकार की घटनाएं हैं, जिनमें से सभी 7 मूल गुणों को साझा करते हैं और फिर ईवेंट प्रकार के आधार पर 0 से 15 अतिरिक्त गुण होते हैं। घटना का प्रकार प्रत्येक पंक्ति में लॉग फ़ाइल में दूसरी संपत्ति है।
इसलिए मैंने वास्तव में एक बदसूरत अनिवार्य पार्सर की कोशिश की है जो लाइन द्वारा लॉग लाइन के माध्यम से चलता है और फिर लाइन द्वारा ईवेंट लाइन को संसाधित करता है। फिर मैंने एक व्याख्यात्मक विनिर्देश की कोशिश की जो "nextEvent" पैटर्न का उपयोग करता है, जिसे लूप में संसाधित किया जाता है और संसाधित किया जाता है। तब मैंने एक सादे पुरानी "पार्स" विधि की कोशिश की जो कभी वापस नहीं लौटाता और केवल पंजीकृत श्रोता कॉलबैक पर ईवेंट को आग लगा देता है। मैंने घटना प्रकार के बावजूद एक एकल कॉलबैक और प्रत्येक ईवेंट प्रकार के लिए विशिष्ट कॉलबैक विधि दोनों की कोशिश की है।
मैंने सभी संभावित गुणों के संघ के साथ आधार "घटना" कक्षा की कोशिश की है। मैंने "नया इवेंट" कॉल से बचने की कोशिश की है (क्योंकि वहां बड़ी संख्या में ईवेंट हो सकते हैं और ईवेंट ऑब्जेक्ट्स आम तौर पर कम रहते हैं) और आदिम संपत्ति तर्कों के साथ प्रति प्रकार कॉलबैक विधियां हैं। मैंने 7 सामान्य आधार गुणों के साथ एक अमूर्त इवेंट पेरेंट के साथ 60 घटना प्रकारों में से प्रत्येक के लिए उप-वर्ग होने का प्रयास किया है।
मैंने हाल ही में इसे आगे ले जाने की कोशिश की और प्रति घटना प्रकार इवेंट हैंडलिंग कोड डालने के लिए कमांड पैटर्न का उपयोग किया। मुझे यकीन नहीं है कि मुझे यह पसंद है और यह वास्तव में कॉलबैक प्रति प्रकार दृष्टिकोण के समान है, बस कोड उप-वर्गों में एक निष्पादित फ़ंक्शन के अंदर है जो प्रति प्रकार कॉलबैक विधियों बनाम है।
समस्या यह है कि मॉडल अद्यतन तर्क के बहुत सारे साझा किए जाते हैं, और इसमें से बहुत से उप-वर्ग के लिए विशिष्ट है, और मैं पूरी चीज के बारे में उलझन में हूं। मुझे आशा है कि कोई मुझे कम से कम एक दिशा में विचार करने के लिए इंगित कर सकता है!
खैर, मुझे पूरा यकीन है कि मैं प्राइमेटिव्स के साथ इवेंट गुणों के साथ रहना चाहता हूं, क्योंकि वे ज्ञात और स्थिर हैं और मुझे प्रदर्शन के बारे में बहुत कुछ पसंद है। मैं घटनाओं के टुकड़ों पर कुल जानकारी की एक रिपोर्ट उत्पन्न करना चाहता हूं। तथ्य के बाद, लेकिन मैं seqeuentially प्रक्रिया (निश्चित रूप से?) प्रक्रिया करना चाहता हूँ। – Josh