मैं सेवा लोकेटर पैटर्न से मेरी कॉन्फ़िगरेशन पहुंच को मॉडल करना चाहता हूं। यह मुझे किसी भी कॉन्फ़िगरेशन मान को प्राप्त करने के लिए एक बिंदु देता है जो मुझे चाहिए और इसे एक अलग पुस्तकालय में एप्लिकेशन के बाहर डालने से, यह पुन: उपयोग और परीक्षण योग्यता की अनुमति देता है। यहां कुछ नमूना कोड दिया गया है, मुझे यकीन नहीं है कि आप किस भाषा का उपयोग कर रहे हैं, लेकिन मैंने इसे सी # में लिखा है।
सबसे पहले मैं एक सामान्य वर्ग बनाता हूं जो मेरे कॉन्फ़िगरेशन इटिम मॉडल करेगा।
public class ConfigurationItem
{
private T item;
public ConfigurationItem(T item)
{
this.item = item;
}
public T GetValue()
{
return item;
}
}
फिर मैं एक वर्ग बनाता हूं जो कॉन्फ़िगरेशन आइटम के लिए सार्वजनिक स्थैतिक रीडोनली चर का खुलासा करता है। यहां मैं सिर्फ एक कॉन्फ़िगरेशन फ़ाइल से ConnectionStringSettings पढ़ रहा हूं, जो सिर्फ xml है। बेशक अधिक वस्तुओं के लिए, आप किसी भी स्रोत से मूल्यों को पढ़ सकते हैं।
public class ConfigurationItems
{
public static ConfigurationItem ConnectionSettings = new ConfigurationItem(RetrieveConnectionString());
private static ConnectionStringSettings RetrieveConnectionString()
{
//In .Net, we store our connection string in the application/web config file.
//We can access those values through the ConfigurationManager class.
return ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["ConnectionKey"]];
}
}
फिर जब मुझे उपयोग के लिए कॉन्फ़िगरेशनइटम की आवश्यकता होती है, तो मैं इसे इस तरह कहते हैं:
ConfigurationItems.ConnectionSettings.GetValue();
और यह मुझे एक प्रकार का सुरक्षित मूल्य वापस कर देगा, जिसे मैं तब भी कैश कर सकता हूं या जो कुछ भी चाहता हूं उसे कर सकता हूं।
नमूना परीक्षण यहां दिया गया है:
[TestFixture]
public class ConfigurationItemsTest
{
[Test]
public void ShouldBeAbleToAccessConnectionStringSettings()
{
ConnectionStringSettings item = ConfigurationItems.ConnectionSettings.GetValue();
Assert.IsNotNull(item);
}
}
उम्मीद है की यह मदद करेगा।