आदेश मेरा डेटाबेस में वस्तुओं के लिए पहुँच प्रदान करने के लिए, मैं एक इंटरफेस डिजाइन करने के लिए बनाई गई टीम के सभी सदस्यों के लिए यह (सरलीकृत उदाहरण) की तरह इस्तेमाल किया जा रहा:कैसे एक डेटाबेस इंटरफ़ेस
public interface IDatabase
{
ObservableCollection<Animal> Animals{ get; }
}
मैं नहीं था ' टी डेटाबेस संदर्भ या कुछ ओरेकल वस्तुओं (कैप्सूलीकरण) की तरह आंतरिक उपयोग करने के लिए टीम वास्तविक जीवन में और इकाई परीक्षण के लिए इस्तेमाल किया जा करना चाहते हैं ...
मैं दो विशिष्ट वर्गों को लागू किया:
public class TestDatabase : IDatabase
{ }
public class OracleDatabase : IDatabase
{ }
कुछ उपयोग के बाद टीम के सदस्यों को अधिक से अधिक कार्यों के लिए पूछ रहे हैं, और मैं मेरी इंटरफ़ेस करने के तरीकों को जोड़ने के लिए:
public interface IDatabase
{
ObservableCollection<Animal> Animals{ get; }
ObservableCollection<Animal> Animals(Gender gender);
ObservableCollection<Animal> Animals(Gender gender, Race race);
}
फ़िल्टरिंग और सॉर्टिंग सामान में से कुछ निश्चित रूप से, डेवलपर खुद के द्वारा किया जा सकता है, लेकिन यह डेटाबेस के अंदर बेहतर स्थित है।
मेरे समस्या अब है कि मेरे इंटरफेस विस्फोट है, यह और अधिक विशिष्ट कार्यों हो रही है हर दिन, यह स्थिर से दूर है और हर समय बदलता रहता है है।
क्या मेरा डिज़ाइन शुरुआत से ही गलत है?
कुछ विचार है कि इस मुद्दे को हल करने के लिए:
- सभी डेवलपर्स के लिए डेटाबेस संदर्भ वस्तु का पर्दाफाश (बुरा मुझे लगता है कि)
- एक समारोह है कि एक LINQ क्वेरी
जैसे-जैसे आप अधिक से अधिक जोड़ते हैं, आप शायद पाएंगे कि आप अंततः डेटाबेस संदर्भ ऑब्जेक्ट को फिर से कार्यान्वित कर रहे हैं, यह है कि आप मूल रूप से छिपाने की कोशिश करते हैं (संभवतः नए नामों के साथ)।इसे कभी-कभी "कुछ संदर्भों में)" आंतरिक मंच प्रभाव "के रूप में संदर्भित किया जाता है –