Proxy – Patrones de diseño
Antonio Leiva

El patrón de diseño Proxy es una técnica comúnmente utilizada en programación orientada a objetos para proporcionar una interfaz de acceso a un objeto real.

Esto se logra mediante la creación de un objeto «proxy» que actúa como intermediario entre el usuario y el objeto real, permitiendo controlar y manipular el acceso a ese objeto.

Ejemplo Proxy 1: Calculadora

En Kotlin, podemos implementar el patrón de diseño Proxy utilizando la palabra clave by en la declaración de una interfaz. Por ejemplo, si tenemos una interfaz llamada Calculator que tiene un método llamado sum:

interface Calculator {
    fun sum(a: Int, b: Int): Int
}

Podemos crear una clase llamada CalculatorProxy que implemente esta interfaz y actúe como intermediario para el objeto real que hace la operación de suma:

class CalculatorProxy(private val realCalculator: Calculator) : Calculator by realCalculator

En este caso, la clase CalculatorProxy está delegando la implementación del método sum al objeto realCalculator, que es el objeto real que hará la operación de suma.

De esta manera, podemos controlar el acceso a la operación de suma a través del objeto CalculatorProxy, permitiendo por ejemplo validar los parámetros de entrada o realizar algún tipo de cálculo adicional antes de delegar la operación al objeto real.

Ejemplo Proxy 2: Servidor remoto

Otro ejemplo de utilización del patrón de diseño Proxy en Kotlin puede ser el acceso a un servicio remoto. Supongamos que tenemos una interfaz llamada RemoteService que tiene un método llamado getData():

interface RemoteService {
    fun getData(id: Int): String
}

Podemos crear una clase llamada RemoteServiceProxy que implemente esta interfaz y actúe como intermediario para el objeto real que hace la llamada al servicio remoto:

class RemoteServiceProxy(private val realRemoteService: RemoteService) : RemoteService by realRemoteService

En este caso, la clase RemoteServiceProxy está delegando la implementación del método «obtenerDatos» al objeto realRemoteService, que es el objeto real que hace la llamada al servicio remoto.

De esta manera, podemos controlar el acceso a la llamada al servicio remoto a través del objeto RemoteServiceProxy, permitiendo por ejempl

o realizar validaciones de seguridad antes de delegar la llamada al objeto real.

Además, el patrón de diseño Proxy también nos permite implementar caché en la respuesta del servicio remoto, evitando realizar llamadas innecesarias si ya se ha obtenido previamente la misma información.

Conclusión

En resumen, el patrón de diseño Proxy nos permite proporcionar una interfaz de acceso controlado a un objeto real, permitiendo implementar funcionalidades adicionales como validaciones de seguridad o caché de respuestas.

Esto puede ser muy útil en diferentes escenarios, como en el acceso a servicios remotos o en la implementación de lógica de negocio compleja.

En Kotlin, podemos implementar el patrón de diseño Proxy utilizando la palabra clave by en la declaración de una interfaz, delegando la implementación de sus métodos a un objeto real.

Quizá también te interese…

Las reglas FIRST de los tests

Las reglas FIRST de los tests

Las reglas FIRST son un conjunto de principios que se utilizan para diseñar y escribir tests de software de manera efectiva. Las siglas FIRST significan: F - Fast: Un test debe ser rápido de ejecutar. I - Independent: Un test debe ser independiente de otros tests y...

¿Qué son los dobles de test?

¿Qué son los dobles de test?

Los dobles de prueba (también conocidos como "doubles" o "fakes") son herramientas comunes en la programación y en particular en el testing de software. Se utilizan para simular el comportamiento de una dependencia de una aplicación en un entorno de pruebas, sin tener...

Kata del TicTacToe en Kotlin

Kata del TicTacToe en Kotlin

Escribe el código para representar una entidad que almacene el tablero de juego del 3 en raya, y que además tenga: Un método move() con 2 parámetros, fila y columna, que permita añadir un movimiento al tablero Un método findWinner(), que devuelva el ganador (X, Y o...

0 comentarios

Enviar un comentario

Los datos personales que proporciones a través de este formulario quedarán registrados en un fichero de DevExpert, S.L.U., con el fin de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento de la parte interesada. Si no se acepta, no podrás comentar en este blog. Los datos que proporciona solo se utilizan para evitar el correo no deseado y no se usarán para nada más. Puede ejercer los derechos de acceso, rectificación, cancelación y oposición en contacto@devexperto.com.

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad *