Mi comprensión de Factory Method es (Corrígeme si estoy equivocado)Factory Method
Método de fábrica del patrón
"Método de fábrica permitir que el cliente delega la creación del producto (Creación de instancias) a la subclase ".
Hay dos situaciones en las que podemos crear un patrón de método de fábrica.
(i) Cuando el cliente está restringido a la creación del producto (Instancia).
(ii) Hay varios productos available.but una decisión a la que se hará instancia de producto necesidad de ser devueltos.
Si desea crear Resumen patrón Método
- Es necesario tener producto abstracto
- hormigón Producto
- Método de fábrica para devolver el producto adecuado.
Ejemplo:
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();
}
es mi entendimiento del método de fábrica es la correcta?
por cierto, usando un 'enum' de este tipo es probable que resulte en innecesaria' switch'-ción. En tales casos, prefiero usar una función diferente para cada opción. –