Template Method – Patrones de diseño
Antonio Leiva

El patrón de diseño Template Method es uno de los patrones de diseño más utilizados en la programación orientada a objetos.

Este patrón se basa en la idea de definir una plantilla de un algoritmo y dejar que las subclases implementen los pasos específicos del mismo.

Para entender mejor el patrón Template Method, consideremos un ejemplo en el que queremos implementar una clase que represente una receta de cocina.

En este caso, la clase base sería la clase Recipe, que tendría un método template llamado cook(), que contiene el algoritmo general de la receta.

En el método cook(), primero se pondría el agua a hervir, luego se añadirían los ingredientes y se cocinaría a fuego lento. Sin embargo, la elección de los ingredientes y la duración de la cocción dependen de la receta específica que se esté preparando. Por lo tanto, en la clase base Recipe se dejaría un espacio para que las subclases implementen estos pasos específicos.

A continuación, se presenta un ejemplo de cómo se podría implementar esta clase en Kotlin:

abstract class Recipe {
    fun cook() {
        boilWater()
        addIngredients()
        cookSlowly()
    }

    abstract fun addIngredients()
    abstract fun cookSlowly()

    fun boilWater() {
        println("Poniendo agua a hervir...")
    }
}

class PastaRecipe : Recipe() {
    override fun addIngredients() {
        println("Añadiendo pasta y salsa al agua hirviendo...")
    }

    override fun cookSlowly() {
        println("Cocinando a fuego lento durante 12 minutos...")
    }
}

class SoupRecipe : Recipe() {
    override fun addIngredients() {
        println("Añadiendo verduras y carne al agua hirviendo...")
    }

    override fun cookSlowly() {
        println("Cocinando a fuego lento durante 30 minutos...")
    }
}

En este ejemplo, la clase Recipe es la clase base que contiene el método cook() como plantilla del algoritmo de la receta. La clase PastaRecipe y la clase SoupRecipe son subclases que implementan los pasos específicos de cada receta.

Al utilizar el patrón Template Method, podemos asegurarnos de que todas las recetas sigan el mismo algoritmo general, pero que cada una pueda personalizarse según sus ingredientes y duración de la cocción.

Además, el patrón Template Method también nos permite reutilizar código y evitar la repetición de código en las subclases.

En el ejemplo anterior, la clase base Recipe tiene un método «boilWater» que es utilizado por todas las subclases.

De esta manera, no es necesario que cada subclase implemente el mismo método para hervir agua.

En resumen, el patrón Template Method es una herramienta útil en la programación orientada a objetos para definir un algoritmo general y permitir que las subclases implementen los pasos específicos.

Este patrón nos permite reutilizar código y evitar la repetición de código en las subclases.

En Kotlin, podemos implementar el patrón Template Method utilizando la palabra clave abstract y las funciones abstractas.

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 *