के साथ काम करने के लिए कौन सा डिज़ाइन पैटर्न बेहतर है मेरे करियर के दौरान मैंने कुछ अलग डिज़ाइन देखा, डीएओ, सेवा, नियंत्रक परतों के साथ कैसे काम करना है। मैं दो के बारे में पूछना चाहता हूं, जो समान हैं लेकिन कुछ मतभेद हैं। पहला डिजाइन परतों के बीच दृश्य बाधा उत्पन्न करता है। नियंत्रक हमेशा सेवाओं और सेवाओं का उपयोग करते हैं। सेवाएं अन्य सेवाओं या डीएओ का उपयोग कर सकती हैं। नियंत्रक सीधे किसी भी डीएओ का उपयोग नहीं कर सकते हैं। यह डिज़ाइन स्पष्ट है, लेकिन मेरे लिए बड़ा नुकसान है: हमें हमेशा डीएओ में प्रत्येक विधि के लिए सेवा में विधि बनाना है। लेकिन कई मामलों में सेवा विधियां केवल डीएओ विधियों और कुछ और का आह्वान करती हैं।नियंत्रक/सेवाएं/डीएओ
उदाहरण के लिए: हम UserDao
class UserDao {
public List<User> findByName(String name) { ... }
public List<User> findByLastName(String name) { ... }
public List<User> findOlderThan(int age) { ... }
......
}
उपरोक्त सभी तरीकों नियंत्रकों द्वारा उपयोग किया जाता है। हमें अपने मामले में क्या करना चाहिए? UserService
में इसी तरह के तरीकों बनाएँ:
class UserService {
public List<User> findByName(String name) { return userDao.findByName(name); }
public List<User> findByLastName(String name) { return userDao.findByLastName(name); }
public List<User> findOlderThan(int age) { return userDao.findOlderThan(age); }
......
}
मेरे लिए यह केवल पढ़ने के तरीकों के लिए अतिरिक्त अनावश्यक परत है।
दूसरे डिज़ाइन में हमें इसके साथ कोई समस्या नहीं है क्योंकि हम सीधे नियंत्रकों में डीएओ का उपयोग कर सकते हैं। इस डिज़ाइन में हमारे पास एक नियम है: यदि हम "डेटा स्टोर" से डेटा पुनर्प्राप्त करना चाहते हैं तो हम किसी भी परत में डीएओ का उपयोग कर सकते हैं, अगर हम "डेटा स्टोर" में कुछ बदलाव करना चाहते हैं तो हमें सेवा विधियों का उपयोग करना होगा।
इन डिजाइनों के बारे में आप क्या सोचते हैं? कौनसा अच्छा है? मुझे अपनी परियोजनाओं में किस का उपयोग करना चाहिए और जिसे भुलाया जाना चाहिए? क्या आप इस क्षेत्र में अपने अनुभव के साथ साझा कर सकते हैं?
इस उत्तर के लिए धन्यवाद। "यदि आप डीएओ का पर्दाफाश करते हैं, तो आपकी मॉडल परत प्रस्तुति में रिसाव शुरू होती है।" - मुझे लगता है कि यह पहली डिजाइन और दूसरे के लिए भारी विपक्ष के लिए एक बड़ा पेशेवर है। –
@ tereško तो क्यों न केवल इकाई प्रबंधक को सेवा में इंजेक्ट करें?क्या इकाई एक दाओ स्वयं नहीं है, जो सीआरयूडी/एक संसाधन संचालन में उपयुक्त है? – MGorgon
@MGorgon इसे जावा-विशिष्ट चीज़ के अलावा, अच्छी तरह से .. इकाई प्रबंधक एक डीएओ नहीं है, लेकिन दृढ़ता के लिए अमूर्तता की एक और परत है। जिसका मतलब है कि आप सवाल का कोई मतलब नहीं है। डीएओ दृढ़ता का हिस्सा नहीं हैं। –