Strategy – Patrones de Diseño
Antonio Leiva

El patrón de diseño Strategy es un patrón de diseño de software que permite a una clase cambiar su comportamiento en tiempo de ejecución.

Esto se logra mediante la creación de diferentes estrategias o algoritmos que pueden ser intercambiados fácilmente.

En Kotlin, podemos implementar el patrón Strategy mediante la creación de una interfaz que define el comportamiento deseado y luego crear diferentes clases que implementen esa interfaz de manera diferente.

Ejemplo de patrón Strategy

Por ejemplo, supongamos que queremos crear una aplicación de estrategia militar en la que se puedan utilizar diferentes estrategias de ataque.

Podríamos crear una interfaz llamada AttackStrategy que define el comportamiento de ataque, y luego crear diferentes clases que implementen esa interfaz de manera diferente, como AirAttack o GroundAttack.

Para hacer uso de estas diferentes estrategias de ataque, podríamos crear una clase llamada MilitaryUnit que tenga una propiedad attackStrategy que sea una instancia de la interfaz AttackStrategy.

Entonces, podríamos cambiar la estrategia de ataque de una unidad militar en tiempo de ejecución simplemente asignando una nueva estrategia a la propiedad attackStrategy.

A continuación, se muestra un ejemplo de cómo implementar el patrón Strategy en Kotlin:

// Interfaz que define el comportamiento de ataque
interface AttackStrategy {
    fun attack()
}

// Clase que implementa la estrategia de ataque aéreo
class AirAttack: AttackStrategy {
    override fun attack() {
        println("Atacando desde el aire")
    }
}

// Clase que implementa la estrategia de ataque terrestre
class GroundAttack: AttackStrategy {
    override fun attack() {
        println("Atacando desde el suelo")
    }
}

// Clase que representa una unidad militar
class MilitaryUnit(var attackStrategy: AttackStrategy) {
    fun attack() {
        attackStrategy.attack()
    }
}

// Creación de una unidad militar con una estrategia de ataque aéreo
val militaryUnit = MilitaryUnit(AirAttack())
militaryUnit.attack() // Imprime "Atacando desde el aire"

// Cambio de la estrategia de ataque a una estrategia terrestre
militaryUnit.attackStrategy = GroundAttack()
militaryUnit.attack() // Imprime "Atacando desde el suelo"

Conclusión

En resumen, el patrón de diseño Strategy nos permite cambiar el comportamiento de una clase en tiempo de ejecución mediante la creación de diferentes estrategias o algoritmos que pueden ser intercambiados fácilmente.

Esto nos permite tener un código más flexible y adaptable a diferentes situaciones.

En Kotlin, podemos implementar el patrón Strategy mediante la creación de una interfaz que define el comportamiento deseado y luego crear diferentes clases que implementen esa interfaz de manera diferente.

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 *