फैक्टरी विधि पैटर्न का मेरे समझ है (मुझे सही अगर मैं गलत हूँ)फैक्टरी विधि पैटर्न स्पष्टीकरण
फैक्टरी विधि पैटर्न
"फैक्टरी विधि प्रतिनिधियों के लिए ग्राहक उत्पाद निर्माण की अनुमति (इंस्टेंस क्रिएशन) उप-वर्ग में "।
ऐसी दो स्थितियां हैं जिनमें हम फैक्टरी विधि पैटर्न बनाने के लिए जा सकते हैं।
(i) जब ग्राहक उत्पाद (इंस्टेंस) निर्माण तक सीमित है।
(ii) कई उत्पादों रहे हैं available.But एक निर्णय किए जाने के लिए जो उत्पाद उदाहरण जरूरत लौटा दी है।
आप सार विधि पैटर्न
- आप अमूर्त उत्पाद
- कंक्रीट उत्पाद
- फैक्टरी विधि उपयुक्त उत्पाद वापस जाने के लिए की आवश्यकता है बनाना चाहते हैं।
उदाहरण:
public enum ORMChoice
{
L2SQL,
EFM,
LS,
Sonic
}
//Abstract Product
public interface IProduct
{
void ProductTaken();
}
//Concrete Product
public class LinqtoSql : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken:LinqtoSql");
}
}
//concrete product
public class Subsonic : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken:Subsonic");
}
}
//concrete product
public class EntityFramework : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken:EntityFramework");
}
}
//concrete product
public class LightSpeed : IProduct
{
public void ProductTaken()
{
Console.WriteLine("OR Mapping Taken :LightSpeed");
}
}
public class Creator
{
//Factory Method
public IProduct ReturnORTool(ORMChoice choice)
{
switch (choice)
{
case ORMChoice.EFM:return new EntityFramework();
break;
case ORMChoice.L2SQL:return new LinqtoSql();
break;
case ORMChoice.LS:return new LightSpeed();
break;
case ORMChoice.Sonic:return new Subsonic();
break;
default: return null;
}
}
}
**Client**
Button_Click()
{
Creator c = new Creator();
IProduct p = c.ReturnORTool(ORMChoice.L2SQL);
p.ProductTaken();
}
फैक्टरी विधि की मेरी समझ सही है है?
btw, एक 'enum' का उपयोग कर इस तरह अनावश्यक' switch'-आईएनजी में परिणाम की संभावना है। ऐसे मामलों में मैं प्रत्येक विकल्प के लिए एक अलग समारोह का उपयोग करना पसंद करता हूं। –