Pop

Patrones de diseño software 9. Patrón estructural Proxy

9. Patrón estructural  Proxy

  • 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 ocasión veremos el patrón de diseño  Proxy.  El patrón Proxy proporciona un objeto intermediario entre el cliente y el objeto a utilizar, que permite configurar ciertas características (como el acceso) sin necesidad de modificar la clase original. Podríamos definir a un Proxy como una clase o componentes que hace el papel de intermediario entre la clase que queremos utilizar el cliente que la esta utilizando.
  • Vamos a ver un ejemplo típico que consistirá en control de acceso mediante un proxy de protección.  Para ello vamos a imaginar un escenario en el que se desea realizar la descarga de cierto material que, pese a estar disponible públicamente,  no está permitida su posesión en el país del cliente.
  • El modelo de clases que utilizaremos para el ejemplo es el siguiente:

  • En el siguiente  vídeo tenéis un ejemplo de este patrón de diseño.
  • Os dejo el código de las diferentes clases vistas en el vídeo:
    • Clases Servidor, ProxyMiServidor y MiServidor:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Proxy
{
    public abstract class Servidor
    {
        public abstract string descargar(String url);
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Proxy
{
    public abstract class Servidor
    {
        public abstract string descargar(String url);
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Proxy
{
    class ProxyMiServidor:Servidor
    {
        MiServidor miServidor;
        private int puerto;
        private String host;
        public ProxyMiServidor(int p, String h)
        {
            puerto = p;
            host = h;
            miServidor = null;
        }
        public override string descargar(String url)
        {
            string resultado = String.Empty;
            if (restringido(url))
            {
                if (miServidor == null)
                    miServidor = new MiServidor(puerto, host);

                resultado= miServidor.descargar(url);
                
            }
            else
              resultado=  "Desde esta ubicación no puedes descargar.";

        

        return resultado; 
        }



        public Boolean restringido(string ruta)
        {
            Boolean descargaPermitida = false;
            if (ruta == "descargaPermitida")
                descargaPermitida = true;
            return descargaPermitida;
        }
    }
}

  • Clases Program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Proxy
{
    class Program
    {
        static void Main(string[] args)
        {
            // Creamos el proxy a la página de descargas
            Servidor servidor = new ProxyMiServidor(20, "https://cursoprogramacioncsharptutoriales.blogspot.com/");
            // Descargamos un archivo permitido
            Console.ForegroundColor = ConsoleColor.Green;
           Console.WriteLine(  servidor.descargar("descargaPermitida"));
           Console.ReadLine();
            // Vamos a probar ahora con una descarga restringida
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(servidor.descargar("descargaDenegada"));
            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...