Pop

Patrones de diseño software 2.Factory

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:
*Clase BaseDatosGenerica:

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

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...