2012-06-07 22 views
15

यदि आप अधिक जानकारी चाहते हैं तो कृपया मुझे बताएं, या इस प्रश्न की अंतिम पंक्तियों को देखें। मैंने पहले से ही बहुत कुछ पढ़ा है और मुझे लगता है कि मैं कुछ जटिल में कुछ सरल कर रहा हूं और मैं अभी भी वहां और वहां फंस गया हूं, इसलिए शायद आप उन विशिष्ट बिंदुओं में मेरी मदद कर सकते हैं।स्विंग के साथ जावा में एमवीसी को सही ढंग से कैसे कार्यान्वित करें?

मैं नेटबीन्स आईडीई 7 और जेडीके 7 का उपयोग कर रहा हूं, और कोई ढांचा नहीं है। पहली विंडो एक जेएफआरएएम है और अन्य सभी विंडोज़ मोडल = सत्य के साथ जेडियलॉग हैं।

सवाल:

  1. कैसे मैं सही ढंग से स्विंग के साथ MVC पैटर्न लागू करते हैं? विचारों से भालू कौन सा बेहतर है: (ए) या (बी)? या शायद एक और ... यह बेहतर क्यों है?

    (ए) मुख्य:

    MyModel model 
    MyView view(model) 
    

    MyView:

    MyController(this, model) 
    

    (बी)
    मुख्य:

    MyModel model 
    MyView View 
    MyController controller(view, model) 
    
  2. जब मैं मेनफ्रेम में jbutton1 क्लिक मैं इसे की जरूरत है संपादन सेटिंग्स के लिए सेटिंग्सफ्रेम खोलने के लिए। मुझे सेटिंग्स, फ्रेम के दृश्य, मॉडल और नियंत्रक को तुरंत चालू करना चाहिए? मेनफ्रेम नियंत्रक में?

  3. एमवीसी संगठन और कार्यान्वयन के संदर्भ में, मुझे अधिक विशिष्ट विशेषताओं को कैसे संभालना चाहिए (जाहिर है) एमवीसी "पैरों" (या तो मॉडल या व्यू या कंट्रोलर) में से एक या दो की कमी है? क्या मुझे उनके लिए खाली कक्षाएं बनाना चाहिए?

    a. The implementation of a TrayIcon 
    b. A URL connection class (an HttpsUrlConnection which will update data in the main jframe and also upload/download files) 
    c. A Directory Monitor (which will update data in the main jframe and also use the urlconnection to download a file) 
    d. My own implementation of TableModel 
    e. json 
    
  4. पूरे एप्लिकेशन के माध्यम से सेटिंग के साथ किसी ऑब्जेक्ट को सही तरीके से कैसे रखें और उपयोग करें? मुझे अलग-अलग स्थानों (दृश्य, मॉडल, नियंत्रक) में इसकी जानकारी की आवश्यकता होगी लेकिन इसे रनटाइम के दौरान उपयोगकर्ता द्वारा बदला जा सकता है)। क्या यह मॉडल एक सिंगलटन बनाना अच्छा विचार है?

  5. मुझे क्या करना चाहिए जब:

    a. View needs some data from the Model? 
    What I'm doing: using the reference of Model which I keep in the View 
    b. View needs some data from the Controller? 
    What I'm doing: using the reference of Controller which I keep in the View 
    c. Model needs some data from the Controller? 
    Still didn't happen but I have no idea how to do correctly 
    d. Model needs some data from the View? 
    What I'm doing: pulling all my hair from my head... 
    e. Controller needs some data from the View? 
    What I'm doing: using the reference of the View which I keep in the Controller 
    f. Controller needs some data from the Model? 
    What I'm doing: using the reference of the Model which I keep in the Controller 
    g. One of FooModel, FooView or FooController needs data from one of BarModel, BarView or BarController? 
    What I'm doing: thinking of jumping from the highest building... 
    
  6. कैसे अगर मैं MVC सही ढंग से लागू पता करने के लिए पर कोई संकेत? क्या मुझे मॉडल या नियंत्रक में बड़े पैमाने पर डेटा की प्रक्रिया करनी चाहिए?

  7. मैं भी एक डीएओ उपयोग कर रहा हूँ, कि मैं क्या कर रहा हूँ है: अपने मॉडल एक

    ArrayList MyModel लोड() जो डीएओ और का एक उदाहरण बनाता

    विधि है डीएओ द्वारा लौटाए गए मॉडल के ऐरेलिस्ट को लौटाता है, और फिर कभी-कभी मैं मॉडल में मॉडल के इस ऐरेलिस्ट को संसाधित करता हूं और कभी-कभी मैं नियंत्रक को इसे संसाधित करने की अनुमति देता हूं। क्या यह एक अच्छा अभ्यास है या क्या कोई बेहतर तरीका है? प्रक्रिया से मेरा मतलब है: ArrayList के माध्यम से पुनरावृत्त करें और मॉडल से डेटा प्राप्त करें।

  8. मेरे पास कुछ दृश्यों तक पहुंच प्रतिबंधित करने के लिए एक पासवर्ड चेक jDialog है।मैं इसे एमवीसी के संदर्भ में कैसे उपयोग कर सकता हूं, ताकि मैं कोड में गड़बड़ किए बिना विभिन्न दृश्यों तक पहुंच को प्रतिबंधित/प्रतिबंधित करने के लिए एक ही पासवर्ड चेक संवाद का उपयोग कर सकूं?

  9. कोई अन्य सुझाव, संकेत, विचार, सुझाव?

प्रसंग: मैं एक जावा विकसित करने के लिए कम समय में MVC सॉफ्टवेयर स्विंग,, विशेष रूप में, हालांकि डिफ़ॉल्ट रूप से मैं एक जावा डेवलपर नहीं कर रहा हूँ और नहीं तो MVC पैटर्न को लागू करने के लिए इस्तेमाल कर रहा हूँ की आवश्यकता जावा (मुझे विचार मिलता है लेकिन कभी-कभी कक्षाओं के बीच संबंधों को लागू करने के लिए मुझे ज्ञान की कमी होती है)। एप्लिकेशन मूल रूप से इस डेटा को दिखाने के लिए मुख्य फ्रेम में एक जेटीबल के साथ स्थानीय/ऑनलाइन फ़ाइलों के लिए एक मॉनिटर है। मैं स्थानीय फाइलों का ट्रैक रखने और डीएओ का उपयोग करके एच 2 डेटाबेस में अपनी जानकारी सहेजने के लिए नई वॉच सेवा एपीआई का उपयोग कर रहा हूं, और उन्हें मुख्य फ्रेम जेटेबल में इस डेटा को पुनः लोड करना है। मुझे उपयोगकर्ता को नई फाइलों के बारे में भी सूचित करना होगा (जिसके लिए मैं ट्रेयॉन का उपयोग कर रहा हूं)। ऑनलाइन फाइलों की निगरानी/अपलोड/डाउनलोड करने के लिए मैं HttpsUrlConnection और json का उपयोग कर रहा हूं। यह सेटिंग्स अनुकूलन की अनुमति भी दे सकता है।

आपके लिए समय और मदद के लिए अग्रिम धन्यवाद।

उत्तर

7

Sun's (Oracle's) suggestions पर एक नज़र डालें।

एक सरलीकरण के रूप में, आप प्रत्येक घटक (मॉडल, व्यू, कंट्रोलर) प्रत्येक घटक (मॉडल, व्यू, कंट्रोलर) को प्रत्येक घटक (आपके ए या बी) के बीच व्यक्तिगत संदर्भों के बजाय संदर्भ का एक बिंदु प्रदान करने के लिए शीर्ष-स्तरीय एप्लिकेशन घटक के साथ पंजीकृत कर सकते हैं। आलेख मैं उद्धृत करता हूं पुश और पुल डिजाइन के लिए विचार प्रदान करता है; मैं एक अधिक लोकप्रिय आधुनिक दृष्टिकोण के रूप में धक्का की सिफारिश करेंगे। प्रकटीकरण: मुझे जावा और एमवीसी के साथ अनुभव है लेकिन स्विंग प्रति मी में एमवीसी नहीं है।

मुझे सेटिंग्सफ्रेम के दृश्य, मॉडल और नियंत्रक को तुरंत चालू करना चाहिए?

निश्चित रूप से, हाँ, या शीर्ष-स्तरीय एप्लिकेशन घटक में।

मैं और अधिक विशिष्ट सुविधाओं है कि (जाहिरा तौर पर) एक या MVC "पैर" (या तो मॉडल या दृश्य या नियंत्रक) के दो का अभाव कैसे प्रबंधित करें?

मैं अपनी खुद की जीयूआई लाइब्रेरी के रूप में जीयूआई-केवल टुकड़े लागू करता हूं। और एक सेवा पुस्तकालय के रूप में पूरी तरह से एल्गोरिदम/सेवा टुकड़े।

क्या मुझे मॉडल या नियंत्रक में बड़े पैमाने पर डेटा को संसाधित करना चाहिए?

डेटा प्रोसेसिंग एल्गोरिदम एक नियंत्रक या यहां तक ​​कि सेवा पुस्तकालय में अच्छी तरह से फिट होगा; आपके मॉडल को संभवतः डेटा प्रकार रूपांतरण या सत्यापन से परे बहुत अधिक प्रसंस्करण नहीं करना चाहिए।

पूरे एप्लिकेशन के माध्यम से सेटिंग के साथ किसी ऑब्जेक्ट को सही तरीके से कैसे रखें और उपयोग करें?

पंजीकरण पर मेरा नोट देखें; एक सिंगलटन उपयुक्त हो सकता है।

+0

+1, मुझे यह पसंद पसंद आया जितना मुझे लिंक पसंद आया, मुझे भी मेरे प्रयासों में मदद मिलेगी :-) प्रश्न के साथ +1 भी, बहुत अच्छी तरह से समझाया गया, मैं दोनों को ऊपर उठाने वाला पहला व्यक्ति था: -) –

+0

उत्तर के लिए धन्यवाद।"पंजीकरण पर मेरा नोट देखें" से आपका क्या मतलब है? मैंने पहले सूरज सुझाव देखा है, लेकिन चूंकि आपने इसकी अनुशंसा की है, मैं इसे फिर से और अधिक बारीकी से और सावधानी से पढ़ूंगा, और अपने संदेहों को हल करने का प्रयास करूंगा। मैंने इसे भी ऊपर उठाया। – dcr

+4

+1 यह भी देखें [उदाहरण] (http://stackoverflow.com/a/3072979/230513), जो आरेख के समान एक [रूपरेखा] (http://stackoverflow.com/a/2687871/230513) का पालन करता है उद्धृत। पंजीकरण पर मेरे नोट द्वारा – trashgod