2011-03-06 15 views
7

मुझे आश्चर्य है कि उन 3 पैटर्न के बीच क्या अंतर है।सिद्धांत 2 में प्रॉक्सी, भंडार और सेवाओं के बीच क्या अंतर है?

जहां तक ​​मैं समझता हूँ:

  • प्रॉक्सी केवल आलसी लोड संस्थाओं
  • डेटा संग्रह स्थान अपने मॉडल (चौड़ाई DQL बयान के लिए कुछ शॉर्टकट विधि)
  • सेवा करने के लिए तर्क जोड़ने के लिए उपयोग किया जाता है के लिए उपयोग किया जाता है मॉडल और नियंत्रकों

यह पिछले के लिए, सेवाओं भरोसा करने के लिए उपयोग किया जाता है, मुझे नहीं बिंदु इसके पीछे भंडार के रूप में एक सिद्धांत 2 परियोजना के साथ लगातार प्रणाली beh के बारे में पता कर रहे हैं नहीं इंड, क्योंकि यह डीबीएएल के साथ ओआरएम का उपयोग करता है।

मैंने पढ़ा कि प्रॉक्सी का उपयोग संस्थाओं में तर्क जोड़ने के लिए किया जा सकता है, तो भंडारों के साथ क्या अंतर है?

वैसे, क्या मेरी संस्थाओं में केवल अपनी विशेषता के लिए सार्वजनिक गेटर/सेटर होना चाहिए और केवल यही? क्या यह सही है?

मैं यहां खो गया हूं।

क्या आपके पास कोई ठोस उदाहरण है?

उत्तर

17

ए प्रॉक्सी कुछ का संदर्भ है।

मान लीजिए कि आप एक उपयोगकर्ता बना रहे हैं और एक उपयोगकर्ता के पास एक समूह संलग्न है। यदि आपके पास प्रॉक्सी समर्थन नहीं है, तो आपको इकाई के उपयोग के लिए समूह के लिए डीबी पर लाने की आवश्यकता होगी। यहां एक संभावित कोड है:

$group = $em->getRepository('Group')->findOneById(1); 

प्रॉक्सी के समर्थन के साथ, आपको डीबी लुकअप करने की आवश्यकता नहीं है। एक प्रॉक्सी को वास्तव में इसे लाने के बिना डीबी चीज का संदर्भ माना जाता है। आपका कोड:

$group = $em->getReference('Group', 1); 

प्रॉक्सी ... सरल है अगर तुम सिर्फ यह सामान्य रूप से करते (उदाहरण के लिए) प्राप्त करने के लिए समूह का नाम की जरूरत है, जाने का लाभ: $ समूह-> getName(); और प्रॉक्सी एंटिटी (डीबी ऑन-डिमांड) प्राप्त करेगा।

एक रिपोजिटरी एक डेटा मैनिपुलेशन चीज है। आप अपनी संस्थाओं का प्रबंधन करने के लिए इसका इस्तेमाल करते हैं। तो आप BIId, findOneByEmail, आदि पा सकते हैं। आप अपनी मूल कार्यक्षमता भी बढ़ा सकते हैं और अपनी इकाइयों को प्रबंधित करने वाली अपनी विधियों को कार्यान्वित कर सकते हैं, जैसे: saveUser, पुनर्प्राप्ति MostActiveUsers।

एक सेवा आंतरिक रूप से रेपॉजिटरीज़ का उपयोग करती है, लेकिन इसमें अधिक सत्यापन होता है और> 1 रिपोजिटरी के साथ बातचीत कर सकता है। उदाहरण के लिए, उपयोगकर्ता को सफलतापूर्वक सहेजने के बाद, आप उसे एक बधाई ईमेल भेजना चाहते हैं। तो UserService की अपनी createUser विधि के अंदर, आप अधिसूचना सेवा पुनर्प्राप्त करें और नया पंजीकरण ईमेल प्रेषित करें।

क्या यह आपके लिए अभी स्पष्ट है? =)

चीयर्स,

+3

अधिसूचना सेवा के लिए +1। वास्तव में यह समझने में सहायता करता है कि किस तरह की चीजें एक सेवा (जैसे उपयोगकर्ता सेवा) सहयोगी सेवाओं (जैसे अधिसूचना सेवा) के साथ कर सकती हैं। धन्यवाद। ;-) –

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