2.Patrón de creación Factory
- Hola a todos.Seguimos con nuestro curso dedicado a los patrones de diseño software.Los patrones de diseño son unas técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
- En esta entrada veremos el patrón de diseño Factory, que consiste en utilizar una clase constructora abstracta con unos cuantos métodos definidos y otros abstractos. Es un patrón de diseño creacional y que sirve para construir una jerarquía de clases. En nuestro caso la jerarquía de clase que hemos creado tiene el aspecto que veis en la imagen:
- En el siguiente vídeo vemos con un ejemplo como construir esta estructura de clases basándonos en el patrón de diseño factory.
- Os dejo el código de las diferentes clases vistas en el vídeo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factory
{
public abstract class BaseDatosGenerica
{
public abstract string dameCadenaConexion();
}
}
*Clase Oracle:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factory
{
class Oracle:BaseDatosGenerica
{
public override string dameCadenaConexion()
{
return "CAdena conexión base de datos Oracle";
}
}
}
*Clase SqlServer
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factory
{
class SqlServer:BaseDatosGenerica
{
public override string dameCadenaConexion()
{
return "Cadena conexión base de datos SQlServer";
}
}
}
*Clase MySql
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factory
{
class MySql:BaseDatosGenerica
{
public override string dameCadenaConexion()
{
return "Cadena conexión base de datos Mysql";
}
}
}
* Clase Configuracion:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factory
{
class Configuracion
{
public const int SqlServer = 1;
public const int Oracle = 2;
public const int MySql = 3;
public BaseDatosGenerica CrearConexion(int BaseDatos)
{
BaseDatosGenerica baseDatos = null;
if (BaseDatos == 1)
baseDatos = new SqlServer();
else if (BaseDatos == 2)
baseDatos = new Oracle();
else if (BaseDatos == 3)
baseDatos = new MySql();
else
throw new Exception("Base de datos no soportada");
return baseDatos;
}
}
}
*Clase Program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Factory
{
class Program
{
static void Main(string[] args)
{
Configuracion conf = new Configuracion();
BaseDatosGenerica bDatos = conf.CrearConexion(Configuracion.SqlServer);
Console.WriteLine(bDatos.dameCadenaConexion());
Console.ReadLine();
bDatos = conf.CrearConexion(Configuracion.Oracle);
Console.WriteLine(bDatos.dameCadenaConexion());
Console.ReadLine();
bDatos = conf.CrearConexion(Configuracion.MySql);
Console.WriteLine(bDatos.dameCadenaConexion());
Console.ReadLine();
}
}
}
No hay comentarios:
Publicar un comentario