2016-05-07 3 views
5

में क्लीन आर्किटेक्चर मैं रियलएमडीबी का मूल्यांकन कर रहा हूं, मुझे लगता है कि रियलएमडीबी मॉडल परत के साथ कसकर मिलकर है। जो मुझे कल महसूस करता है अगर कल मुझे किसी अन्य स्थानीय डेटाबेस के साथ प्रतिस्थापित करने की आवश्यकता है, यह एक बड़ा रिफैक्टरिंग प्रयास होगा।
मेरा सवाल है कि RealmDB के साथ स्वच्छ आर्किटेक्चर कैसे प्राप्त करें? कोई भी उदाहरण मैं अनुसरण कर सकता हूँ?रियलएमडीबी: एंड्रॉइड

उत्तर

2

दायरे सिर्फ आपके डेटाबेस मॉडल को अपने दृश्य मॉडल के रूप में फिर से उपयोग करना आसान बनाता है यदि आप चाहते हैं। लेकिन डेटा लेयर इकाइयों को रखने और परत इकाइयों को देखने और फिर सीमाओं पर मैपिंग करने से कुछ भी नहीं रोक रहा है।

उदा।

// Data layer 
public class FooEntity extends RealmObject { 

    // Realm fields and methods... 

    public static FooEntity fromViewModel(FooViewModel viewModel) { 
    // Convert to entity 
    } 

    public static FooViewModel toViewModel(FooEntity entity) { 
    // Convert to view model 
    } 


} 

// View layer 
public class FooViewModel { 
    // Standard POJO used by the View layer 
} 

कई मामलों में जो अत्यधिक संभावना है, लेकिन यह आपको वह पृथक्करण देगा जो आप चाहते हैं।

+0

मुझे यकीन है कि नहीं कर रहा हूँ अगर मेरी समझ सही है, कि मेरे डेटा परत संस्थाओं RealmObject से विरासत की जरूरत है क्या मतलब है? – Signcodeindie

+0

हां, चूंकि यह आपकी डेटा परत होगी, वास्तविक डेटा को सहेजने और संग्रहीत करने के लिए ज़िम्मेदार क्या होगा –

+0

उस दृष्टिकोण के साथ, सबसे अच्छा अभ्यास ** ** पहले से ही जारी मॉडल को अपडेट करना क्या है? क्या मैं सिर्फ 'viewModel' से कॉल कर सकता हूं और 'realm.insert (fooEntity)' कर सकता हूं? या क्या मुझे पहले 'findById' करने और लेनदेन के अंदर पुनर्प्राप्त ऑब्जेक्ट पर सेटर्स को कॉल करने की आवश्यकता है? – einsA

0

विभिन्न आर्किटेक्चर हैं जहां मुख्य उद्देश्य स्वच्छ वास्तुकला, प्याज वास्तुकला, हेक्सागोनल आर्किटेक्चर के रूप में ढांचे के हमारे आवेदन के डोमेन को अलग करना है।

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

इन आवश्यकताओं के साथ हमारे पास आमतौर पर एक दृढ़ता मॉडल और एक विभेदित डोमेन इकाइयां होंगी। दृढ़ता मॉडल हम ढांचे के साथ जोड़ सकते हैं और उदाहरण के लिए उपयोग कर रहे हैं उदाहरण के लिए दायरे।

मैं एक आरेख छोड़ देता हूं जहां आप इसे ग्राफिक रूप से बेहतर ढंग से समझ सकते हैं।

Clean Architecture