2014-10-08 5 views
5

इसलिए मैंने हाल ही में अपनी कार्य परियोजनाओं में रिपोजिटरी पैटर्न का उपयोग करना शुरू कर दिया है। मैं एक ही प्रश्न में चल रहा हूं कि मुझे इसका जवाब नहीं मिल रहा है:अन्य भंडारों के अंदर लार्वा रेपॉजिटरीज

क्या मौजूदा भंडार में एक और भंडार इंजेक्ट करना ठीक है? ऐसा करने के नकारात्मक प्रभाव क्या हैं?

उदाहरण के लिए:

class CrawlsRepository implements CrawlsRepositoryInterface { 

    public function __construct(ArchiveRepository $archive) 
    { 
     $this->archive = $archive; 
    } 

    ... 

    ... 

    public function getCrawlList() 
    { 
     // Do stuff with $this->crawl 
     // Do stuff with $this->archive 
    } 
} 

CrawlsRepository अंदर कुछ तरीकों सिर्फ आर्काइव मॉडल का उपयोग करने के है, जिसका अर्थ यह ArchiveRepository उपयोग करने के लिए पैटर्न को बनाए रखने की जरूरत है कर रहे हैं।

इन परिस्थितियों में आप लोग/gals क्या करते हैं? मुझे लगता है कि मुझे यहां कुछ याद आ रहा है, मैंने पहले पढ़ा है, लोग कहते हैं कि यदि आपको एक और भंडार खींचने की आवश्यकता महसूस होती है, तो मौसम का मूल्यांकन करें, आपको वास्तव में पहली बार दो अलग-अलग रिपोजिटरीज की आवश्यकता है, मुझे पहले से जवाब देने दो, मैं कर।

किसी भी दिशा के लिए धन्यवाद जो आप प्रदान कर सकते हैं! :)

उत्तर

3

तकनीकी रूप से ऐसा करना ठीक है। वास्तव में यह अच्छा है क्योंकि आप निर्भरता इंजेक्शन का उपयोग कर रहे हैं, इसलिए आप केवल एक कार्यान्वयन से बंधे नहीं हैं।

संकल्पनात्मक रूप से, भंडार डेटा स्रोत पहुंच के आसपास रैपर का प्रतिनिधित्व करता है। तो मुझे लगता है कि आगे डेटा पुनर्प्राप्त करने के लिए एक और भंडार का उपयोग करना ठीक है।

दूसरी तरफ जब आप कहते हैं: There are certain methods inside the CrawlsRepository that just have to use the Archive Mode तो इन विधियों के पास क्रॉल रिपोजिटरी के अंदर कुछ भी नहीं है। वे ArchiveRepository से संबंधित हैं।

यहां उपयोग का मामला तब होता है जब आप अपने क्रॉल रिपोजिटरी से संबंधित कुछ वापस करना चाहते हैं, लेकिन आप अपने डेटा पर किसी भी तरह से जुड़े अभिलेखागार वापस करना चाहते हैं। इस मामले में, क्रॉल रिपोजिटरी को लौटने से पहले आवश्यक अभिलेखागार एकत्र करने के लिए ArchiveRepository को कॉल करना है।

लेकिन फिर, अगर किसी विधि को केवल ArchiveRepository की आवश्यकता है, तो ऐसा लगता है कि आप इसे गलत कर रहे हैं।

मुझे आशा है कि मेरी व्याख्या पर्याप्त स्पष्ट है क्योंकि यह काफी अमूर्त और व्यक्तिपरक विषय है।

+0

मैं कन्स्ट्रिक इंजेक्शन को बड़े पैमाने पर करते हुए चक्रीय निर्भरताओं में भाग लेता हूं। मैं ऐसे मामलों में सेटर इंजेक्शन पर स्विच करता हूं – Arindam

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