लागू करने पर आर्किटेक्चरल टिप्स तो मैं एक ऐसे अनुप्रयोग पर एक svg-editor-like GUI को कार्यान्वित कर रहा हूं जो मैं यहां काम कर रहा हूं। ये तर्क है कि उस पर की जरूरत होगी के कुछ उदाहरण हैं:GUI तर्क
- उपयोगकर्ता कैनवास पर सही बटन के साथ क्लिक करता है, एक नया नोड एक लाइन के साथ निर्मित किया जाना चाहिए, और बाद में नोड्स "जुड़ा हुआ" किया जाना चाहिए एक बहुभुज
- बनाने उपयोगकर्ता एक नोड के बाएं बटन से क्लिक करता है, मैं बहुभुज के पूरे सेट तदनुसार माउस स्थिति
- उपयोगकर्ता नोड्स
- चयनित नोड्स रंग का होना चाहिए हटाने में सक्षम है करने के लिए आगे बढ़ना चाहिए अलग-अलग
- उपयोगकर्ता प्रेस द्वारा एकाधिक नोड्स चुनने में सक्षम है एनआईजी शिफ्ट और नोड्स पर क्लिक करें
और इसी तरह।
मैं पहले से ही इन सभी वस्तुओं के क्रियान्वित किया है, लेकिन मैं अंतिम परिणाम पसंद आया नहीं था, मुख्य रूप से, क्योंकि मैं झंडे का एक बहुत उपयोग करने के लिए राज्यों में हेरफेर करने के लिए किया था (माउस & & बाएं बटन & & चलती क्लिक नहीं किया गया? ऐसा यह), और निश्चित रूप से यह कोड अधिक सुरुचिपूर्ण हो सकता है। तो मैं एक छोटे से शोध किया और इन विकल्पों के लिए आया था की है:
पाइपलाइन पैटर्न: मैं वर्गों है कि प्रत्येक तार्किक घटना अलग से संभाल करेगे, और एक प्राथमिकता क्रम क्या करना है प्रदान करने के लिए उपयोग करें/क्या होगा पहले सौंपें, और घटना बाद के पाइपलाइन वस्तुओं को कैसे प्रसारित करेगी।
एमवीसी: यह सबसे आम प्रतिक्रिया है, लेकिन इस समय मैं कोड को और अधिक साफ करने के लिए इसका उपयोग कैसे कर सकता हूं।
राज्य मशीन: तो मैं S.O. पूछ रहा हूँ यह अच्छा है, लेकिन राज्य मशीन की ग्रैन्युलरिटी प्रबंध
जटिल हो जाएगा एक बेहतर और खुश कोड बनाने के तरीकों पर गुरुओं पर गुरु।
तो आप कह रहे हैं कि उसे एक पाइपलाइन का उपयोग करना चाहिए जैसा कि उसने अपने प्रश्न में कहा था? – jgauffin
मैं कुछ नया सुझाव दे रहा था। (मुझे लगता है) उन्होंने कहा कि वह घटनाओं को कैप्चरिंग और फ़नल करने के लिए एक पाइपलाइन का उपयोग करना चाहते थे, जो बाद के ईवेंट हैंडलर में तब तक श्रृंखला करेगा जब तक कि अंत हैनल्डर घटना से संबंधित न हो। मैंने उन्हें ट्रिगर करने वाली घटनाओं के बजाए किए जा रहे संचालन पर ध्यान केंद्रित किया। यद्यपि ओपी ने अपने पिपुलिन विचार को स्पष्ट किया है, लेकिन मैं थोड़ा और तुलना कर सकता हूं। मैं ओपी को इसके बारे में जवाब देने के लिए उत्तर देता हूं। – tcarvin
+1 सुझाव और स्पष्टीकरण – jgauffin