मुख्य रूप से जिज्ञासा से बाहर, मैं डोमेन लॉजिक से decoupling दृढ़ता तर्क के रिपोजिटरी पैटर्न के लिए एक पायथन ढांचे या उदाहरण की तलाश में हूं।पायथन में रिपोजिटरी पैटर्न का कार्यान्वयन?
नाम "भंडार पैटर्न" (रूबी) पोस्ट "Untangle Domain and Persistence Logic with Curator" में प्रकट होता है, विचार "डोमेन संचालित डिजाइन" पुस्तक की एक section और Martin Fowler से आता है। मॉडल क्लास में कोई दृढ़ता तर्क नहीं है, बल्कि ऐप रिपोजिटरी उप-वर्गों की घोषणा करता है जिनके उदाहरण मॉडल उदाहरणों के इन-मेमोरी संग्रह की तरह कार्य करते हैं। प्रत्येक भंडार मॉडल को अलग-अलग तरीकों से बना देता है, उदाहरण के लिए एसक्यूएल (विभिन्न स्कीमा सम्मेलन), रीक या अन्य नोएसक्यूएल और मेमोरी (कैशिंग के लिए) के लिए। फ्रेमवर्क सम्मेलनों का मतलब है कि रिपॉजिटरी उप-वर्गों को आम तौर पर न्यूनतम कोड की आवश्यकता होती है: केवल SQLRepository के "विजेट रिपोजिटरी" उप-वर्ग को घोषित करना एक संग्रह प्रदान करेगा जो "विजेट" नामक डीबी तालिका में मॉडल विजेट को जारी रखता है और विजेट विशेषताओं के लिए कॉलम मिलान करता है। अन्य पैटर्न से
अंतर:
सक्रिय रिकॉर्ड पैटर्न: उदाहरण के लिए, Django ORM। एप्लिकेशन केवल डोमेन तर्क के साथ मॉडल वर्ग और दृढ़ता के लिए कुछ मेटाडेटा परिभाषित करता है। ओआरएम मॉडल वर्ग में दृढ़ता तर्क जोड़ता है। यह एक वर्ग में डोमेन और दृढ़ता को मिश्रित करता है (पोस्ट के अनुसार अवांछनीय)।
@marcin के लिए धन्यवाद मैं देखता हूं कि जब सक्रिय रिकॉर्ड विविध बैकएंड और .save (= "other_database" का उपयोग करके) का समर्थन करता है, जो रिपोजिटरी पैटर्न का बहु बैकएंड लाभ देता है।
तो एक अर्थ में रिपोजिटरी पैटर्न एक अलग वर्ग में स्थानांतरित होने के साथ सक्रिय रिकॉर्ड की तरह है।
डाटा मैपर पैटर्न: उदाहरण के लिए, SQLAlchemy के शास्त्रीय मैपिंग। ऐप डेटाबेस तालिका (एस) के लिए अतिरिक्त कक्षाओं को परिभाषित करता है, और डेटा मैपर (ओं) से मॉडल से टेबल तक। इस प्रकार मॉडल उदाहरण को कई तरीकों से तालिकाओं में मैप किया जा सकता है उदा। विरासत स्कीमा का समर्थन करने के लिए। ऐसा नहीं लगता कि SQLAlchemy गैर-SQL स्टोरेज में मैपर प्रदान करता है।
आपके शोध से क्या पता चलता है? मैंने बस कई विकल्पों को आसानी से गुगल किया। – Marcin
'पायथन "भंडार पैटर्न के लिए गुगलिंग" 'कोई कार्यान्वयन नहीं करता है। आपने वास्तव में क्या खोजा? – Graham
http://www.google.co.uk/search?q=django+orm+backend – Marcin