33

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

क्या आप मेरी मदद कर सकते हैं?

बीटीडब्ल्यू: मैं एक परियोजना में वर्तमान काम कर रहा हूं जहां मुझे सेवा कक्षाओं से एक स्थिरता परत का उपयोग करना है। मैंने अपने पैकेज को मॉडल, सेवा और दृढ़ता में विभाजित कर दिया है।

उत्तर

41

निश्चित पैटर्न और इन अवधि के पीछे दिशा निर्देशों जो वह जगह है जहाँ मैं आमतौर पर को उसका आधार रहे हैं,:

नियंत्रकModel-View-Controller design पैटर्न पर आधारित है और कक्षाएं कि नियंत्रक आधारित कार्यक्षमता को लागू करने के लिए स्पष्ट रूप से इस्तेमाल किया जाना चाहिए इस डिजाइन पैटर्न पर। जैसे यदि आप स्प्रिंग एमवीसी का उपयोग कर रहे हैं और आप नियंत्रक कक्षाओं में से एक से विस्तार करते हैं।

सेवा एक छोटे से कम विशिष्ट है, लेकिन मैं "Patterns of Enterprise Application Architecture से Service Layer तर्ज पर कार्यान्वयन आधारित सलाह देते हैं "। मूल रूप से जहां एक नियंत्रक HTTP और आधारित हाइपरटेक्स्ट, आम तौर पर वेब के लिए HTML का प्रतिपादन के माध्यम से अधिक मंच विशिष्ट (जैसे परिवहन है नियंत्रक) एक सेवा है जो इसे उपयोग कर रहा है और कैसे। तुम बस एक समान अंतरफलक है कि जैसे एक वेब नियंत्रक द्वारा बारी में इस्तेमाल किया जा सकता प्रदान कर रहे हैं के बारे में पता करने के लिए नहीं होना चाहिए।

प्रबंधक ठीक है ... सामान का प्रबंधन कनेक्शन, एप्लिकेशन संदर्भ, सत्र; आमतौर पर एक केंद्रीय स्थान के रूप में जहां पूरे एप्लिकेशन में घटक बात कर सकते हैं।

0

मुझे नहीं पता कि मैंने कभी क्लास मैनेजर नाम दिया है, इसलिए मैं इसे छोड़ दूंगा।

मेरे लिए नियंत्रक कुछ नियंत्रित या निर्णय ले रहा है कि कुछ (सिग्नल, संदेश, ..) कहाँ जाना चाहिए।

सेवा इंटरफ़ेस (और उस इंटरफ़ेस का कार्यान्वयन) कुछ कार्यक्षमता प्रदान करता है, आमतौर पर सिस्टम या उप-प्रणाली की सीमा पर। यथासंभव कार्यान्वयन विवरण छुपाता है।

9

नामकरण सम्मेलन के लिए कृपया आधिकारिक convention पढ़ें।

प्रबंधक - जैसा कि नाम बताता है कि आपके कोड में एंटीटी मैनेजर जैसे चीजें प्रबंधित करती हैं, यह संस्थाएं प्रबंधित करती है, लेनदेन प्रबंधक - यह लेनदेन का प्रबंधन करती है। तो आपके पास सुरक्षा प्रबंधक के रूप में कुछ कहा जा सकता है जो एंजो को एन्क्रिप्शन के लिए उपयोग करने के लिए प्रबंधित करता है e.t.c

नियंत्रक - फिर से नाम बहुत कुछ बोलता है, नियंत्रित करता है कि कैसे किया जाना चाहिए, या चीजें कैसे की जानी चाहिए। उदाहरण के लिए एक्शनकंट्रोलर - उपयोगकर्ता एक्शन इवेंट

सेवा - इसे सामान्य सेवा पर किसी व्यक्ति द्वारा किए गए कार्य, किसी सामान्य नोट पर किसी कार्य द्वारा किए गए कार्यों पर विचार करें, आप इसका उपयोग कर सकते हैं।

पैकेजिंग कोड को बहुत सारी सोच की आवश्यकता है, तो आपके एप्लिकेशन पैकेजिंग को हमेशा उस व्यापार मॉडल से संरेखित करना चाहिए जो इसे पूरा कर रहा है।

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

+0

सम्मेलन के लिए, यह उल्लेख किया जाना चाहिए कि सूर्य के बजाए आपके व्यापार के सम्मेलनों में चिपकना बेहतर है। सूर्य के दिशानिर्देश निश्चित रूप से एक अच्छा प्रारंभिक बिंदु है, लेकिन अंत में, आपके cowerkers आपके कोड को बनाए रखेंगे (और आप उनका रखरखाव समाप्त कर देंगे), इसलिए आपको अपनी कंपनी के सम्मेलन का पालन करना चाहिए (यदि आपके पास कोई है ..)। – Laf

+0

सहमत हैं, लेकिन निश्चित रूप से कम से कम आपकी कंपनी कोडिंग मानक सूर्य का पालन करेगा;) – mprabhat

+0

मैं जो कहता हूं वह सच है;) लेकिन मुझे लगता है कि हम वहां पागल कोडिंग मानकों के लिए कुछ मजेदार खुदाई कर सकते हैं। – Laf

10

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