2010-05-27 12 views
5

मैं अपने स्विंग-आधारित एप्लिकेशन में दृढ़ता जोड़ना चाहता हूं; और यह पहली बार है कि मैं ऐसा कुछ कर रहा हूं।जावा स्विंग अनुप्रयोगों को लगातार बनाना

मुझे पता है कि जावा सीरियलाइजेशन एपीआई का उपयोग कैसे करें (हालांकि मैं इसके बजाय xstream का उपयोग कर रहा हूं), मुझे पता है कि जेकंपोनेंट की धारावाहिक है, लेकिन मुझे अधिक वास्तुशिल्प विचारों में दिलचस्पी है: एक एप्लिकेशन को कैसे डिजाइन किया जाना चाहिए ताकि इसे लगातार बना दिया जा सके आसान हो जाता है; आदि

मैं, इन मुद्दों के बारे में गहराई से विचार के साथ किसी भी स्रोत को देखने के लिए खुशी होगी हालांकि मैं भी स्पष्ट रूप से कुछ सर्वोत्तम प्रथाओं :)

उत्तर

7

आप एक model-view-controller approach का उपयोग करना चाहिए सुनने के लिए खुशी होगी। आप केवल मॉडल को क्रमबद्ध करते हैं, न कि दृश्य। दृश्य मॉडल से पॉप्युलेट किया जाना चाहिए। घुमाओ घटकों Serializing वैसे भी सब पर अनुशंसित नहीं है:

While Swing components do implement the Serializable interface, they are not portable between different versions of the Java Virtual Machine

तुम्हारे पास क्या है को देखते हुए, आप कुछ वर्गों है कि अपने मॉडल हैं और केवल डेटा होना चाहिए। इन कक्षाओं को कहीं भी एक्सस्ट्रीम का उपयोग करके क्रमबद्ध किया जाएगा। आपके स्विंग क्लासेस में इन मॉडल वर्गों को प्राप्त करने और फ़ील्ड और संपादकों को पॉप्युलेट करने के तरीके हैं। इसके बाद आप यूआई का विस्तार कर सकते हैं, उदाहरण के लिए, कक्षा को बदलने के बिना, अधिक funcionality जोड़ने, या एक ही डेटा सेट के लिए अलग-अलग विचार प्रदान करते हैं।

इसे फैनसीयर बनाने के लिए, स्विंग घटक को मॉडल को स्टोर और लोड नहीं करना चाहिए, लेकिन आपके पास इन ऑपरेशन करने के लिए स्विंग घटक को पास करने वाला नियंत्रक इंटरफ़ेस होना चाहिए। इस तरह, आप इकाई परीक्षण बेहतर कर सकते हैं और आप दृश्य तर्क से स्टोरेज तर्क को डीक्यूपल कर सकते हैं।

यदि एक्सस्ट्रीम सही ढंग से कॉन्फ़िगर किया गया है, और यदि आप मॉडल और फ़ील्ड के बारे में सावधान हैं, तो पीछे की संगतता को तोड़ने के बिना अपने मॉडल कक्षाओं में और फ़ील्ड जोड़ना संभव होना चाहिए।

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

0

और जावाडोक (JComponent पर उदाहरण के लिए) का कहना है: 1.4 के रूप में, सभी JavaBeansTM की लंबी अवधि के भंडारण के लिए समर्थन java.beans पैकेज में जोड़ा गया है। कृपया XMLEncoder देखें।

तो XMLEncoder देखें।

वास्तुशिल्प बिंदु से, यह क्रमबद्धता बीन्स, संग्रह, और डिफ़ॉल्ट मान की धारणा के साथ सबसे अच्छा काम करती है। सेम पर, यह केवल डिफ़ॉल्ट मान की तुलना में एक अलग मूल्य के साथ गुण बीन्स को बचाता है। (मेरी अंग्रेजी के लिए खेद है)

आप इसे जितनी चाहें कॉन्फ़िगर कर सकते हैं।

+0

यदि जावा बीन नया है और डेटा के लिए उपयोग किया जाता है, तो XMLEncoder एक अच्छा विचार है। अन्यथा, मुझे अभी भी लगता है कि एक JComponent serializing सामान्य रूप से एक बुरा अभ्यास है। –

+0

@ मारियो ओरटेगॉन: हाँ मैं सहमत हूं; लेकिन आदमी एक जेसीओम्पोनेंट के "बीन संस्करण" को एक लिग्थ डिज़ाइन मॉडल के रूप में देख सकता है: उदाहरण के लिए, श्रोताओं, उदाहरण के लिए, केवल रंग, पृष्ठभूमि, स्थिति ... इसलिए, अगर हम क्रमबद्ध/deserialize करना चाहते हैं, तो नियंत्रक को पुनर्निर्माण करना आवश्यक है तर्क। मुझे लगता है कि एक्सएमएल एन्कोडर बहुत अच्छा नहीं है, लेकिन यह बहुत बुरा नहीं है। यह दिलचस्प है :-) – Istao

संबंधित मुद्दे