मैंने नीचे फैक्टरी पैटर्न को कार्यान्वित किया है।फैक्टरी पैटर्न समझना
हालांकि, चूंकि व्यक्तिगत कक्षाएं सार्वजनिक हैं, इसलिए कुछ भी उन्हें तुरंत चालू करने से रोकता है।
क्या यह सही है? मैं कैसे सुनिश्चित करूं कि ठोस वर्ग केवल फैक्ट्री के माध्यम से बनाए जाते हैं?
namespace MRS.Framework
{
public abstract class DataSource
{
public override string ToString()
{
return "DataSource";
}
}
public class XMLDataSource : DataSource
{
}
public class SqlDataSource : DataSource
{
}
public class CSVDataSource : DataSource
{
public int MyProperty { get; set; }
public override string ToString()
{
return "CSVDataSource";
}
}
}
फैक्टरी कार्यान्वयन
namespace MRS.Framework
{
public abstract class DataSourceFactory
{
public abstract DataSource CreateDataSource(DataSourceType datasourcetype);
}
public class CSVDataSourceFactory : DataSourceFactory
{
public CSVDataSourceFactory()
{
}
public override DataSource CreateDataSource(DataSourceType datasourcetype)
{
return new CSVDataSource();
}
}
public class XMLDataSourceFactory : DataSourceFactory
{
public override DataSource CreateDataSource(DataSourceType datasourcetype)
{
return new XMLDataSource();
}
}
public class SqlDataSourceFactory : DataSourceFactory
{
public override DataSource CreateDataSource(DataSourceType datasourcetype)
{
return new SqlDataSource();
}
}
}
मुख्य
static void Main(string[] args)
{
DataSourceFactory datasourcefactory = new CSVDataSourceFactory();
CSVDataSource ds = (CSVDataSource)datasourcefactory.CreateDataSource(DataSourceType.CSVDataSource);
CSVDataSource myds = new CSVDataSource();
Console.WriteLine(ds.ToString());
Console.WriteLine(myds.ToString());
Console.ReadLine();
}
वास्तविक समस्या क्या है जिसे आप हल करने का प्रयास कर रहे हैं? – Steven
कभी-कभी मुझे आश्चर्य होता है कि अगर लोगों ने अपनी मूल भाषा में प्रश्न लिखे हैं और अच्छे अंग्रेजी वाले किसी व्यक्ति ने इसका अनुवाद किया है तो यह हर किसी के लिए आसान होगा। – SimpleVar
वह तथ्य यह है कि वर्तमान वर्ग परिभाषाओं कोई केवल कारखाने के माध्यम से विशिष्ट डेटा स्रोत बनाने सीधे के बजाय करने की अनुमति होगी की चर्चा करते हुए है। –