Bridge – Patrones de Diseño
Antonio Leiva

El patrón de diseño Bridge es un patrón estructural que permite separar la implementación de una clase de su interfaz, de modo que ambos puedan variar de forma independiente.

Esto permite una mayor flexibilidad y reutilización del código, y es muy útil cuando se trabaja con clases que tienen muchas variantes y que pueden ser combinadas de diferentes maneras.

En Kotlin, el patrón Bridge se implementa mediante la creación de una interfaz que define la funcionalidad de la clase, y una clase abstracta que implementa dicha interfaz y que contiene una referencia a un objeto de otra clase que implementa la implementación concreta de la funcionalidad.

Esto se ilustra en el siguiente ejemplo:

interface DrawAPI {
    fun drawCircle(radius: Int, x: Int, y: Int)
}

abstract class Shape(val drawAPI: DrawAPI) {
    abstract fun draw()
}

class Circle(x: Int, y: Int, radius: Int, drawAPI: DrawAPI) : Shape(drawAPI) {
    override fun draw() {
        drawAPI.drawCircle(radius, x, y)
    }
}

En este ejemplo, la interfaz DrawAPI define la funcionalidad para dibujar un círculo, y la clase abstracta Shape contiene una referencia a un objeto que implementa esta interfaz. La clase concreta Circle hereda de Shape y utiliza su referencia a DrawAPI para dibujar un círculo en pantalla.

Esto permite que diferentes implementaciones de DrawAPI puedan ser utilizadas para dibujar círculos de diferentes maneras, como por ejemplo utilizando diferentes librerías gráficas o incluso utilizando diferentes medios como un canvas en una aplicación web o una superficie en una aplicación de escritorio.

class CanvasDrawAPI : DrawAPI {
    override fun drawCircle(radius: Int, x: Int, y: Int) {
        // Dibuja un círculo en un canvas
    }
}

class SurfaceDrawAPI : DrawAPI {
    override fun drawCircle(radius: Int, x: Int, y: Int) {
        // Dibuja un círculo en una superficie
    }
}

De esta forma, el patrón Bridge permite separar la lógica de la clase Shape de la implementación concreta de cómo se dibuja un círculo, lo que facilita la reutilización y extensión del código.

Por ejemplo, podríamos agregar una nueva clase Square que utilice la misma interfaz DrawAPI y la misma clase abstracta Shape para dibujar un cuadrado en lugar de un círculo, sin necesidad de modificar el código existente.

class Square(x: Int, y: Int, side: Int, drawAPI: DrawAPI) : Shape(drawAPI) {
    override fun draw() {
        drawAPI.drawSquare(side, x, y)
    }
}

En resumen, el patrón Bridge es una herramienta muy útil en la programación orientada a objetos, ya que permite separar la implementación de una clase de su interfaz, lo que facilita la reutilización y extensión del código.

En Kotlin, se puede implementar mediante la creación de una interfaz que define la funcionalidad de la clase y una clase abstracta que contiene una referencia a un objeto que implementa dicha interfaz.

Quizá también te interese…

Cómo modularizar una Aplicación Android

Cómo modularizar una Aplicación Android

Cómo modularizar una aplicación Android En este artículo, vamos a hablar sobre la modularización de aplicaciones Android. La modularización es un proceso que consiste en dividir una aplicación en varios módulos, para facilitar su mantenimiento y escalabilidad. La...

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...

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 *