मैं इसे उस आर्किटेक्चर गंध पर विचार करूंगा जो कि अपडेटडाटा में शायद 'सेवा' वर्ग से संबंधित होना चाहिए।
जहां डेटा एक Apple है। जहां AppleAdapter सेवा / व्यवसाय-बुद्धि वर्ग है। जहां AppleService AppleAdapter के लिए एक सिंगलटन संदर्भ है जो वर्तमान पद्धति के बाहर मौजूद है।
private static volatile AppleAdapter _appleService = null;
private static object _appleServiceLock = new object();
private AppleAdapter AppleService
{
get
{
if (_appleService == null)
{
lock (_appleServiceLock)
{
if (_appleService == null)
_appleService = new AppleAdapter();
}
}
return _appleService;
}
}
public SomeAppleRelatedMethod(Apple apple)
{
AppleService.UpdateData(apple);
}
मुझे नहीं लगता कि आप जो कर रहे हैं वह जरूरी है, लेकिन अगर SomeDataAdapter वास्तव में किसी प्रकार की स्टेटलेस व्यावसायिक सेवा का प्रतिनिधित्व करता है, तो एक सिंगलटन इसके लिए सबसे अच्छा अभ्यास होगा। उम्मीद है की वो मदद करदे! प्रदान किया गया उदाहरण फैंसी तरीका है _appleService के किसी भी विवाद को सुनिश्चित करने के लिए नहीं है यदि यह दोनों अशक्त हो और एक ही समय में दो या अधिक थ्रेड द्वारा पहुँचा जा सके।
आपको पता है कि? अगर SomeDataAdapter एक ADO IDbDataAdapter है (जो यह लगभग निश्चित रूप से है), इस पूरी प्रतिक्रिया की उपेक्षा करें!
: पी
मुझे मूल प्रश्न पर टिप्पणी जोड़ने की अनुमति नहीं है, लेकिन यदि आप यह निर्दिष्ट कर सकते हैं कि यह कोड कहाँ मौजूद है।
अगर यह कोड एक IDbDataAdapter के कस्टम कार्यान्वयन का प्रतिनिधित्व करता है, और UpdateData एक IDbConnection, IDbCommand बना रहा है, और इसे सभी दृश्यों के पीछे वायरिंग कर रहा है, तो कोई भी मुझे नहीं लगेगा कि एक कोड गंध क्योंकि अब धाराओं और अन्य के बारे में बात कर रहा है उन चीजों का निपटान करने की आवश्यकता होती है जब हम उनका उपयोग करते हैं।