Arquitectura

1

Patrones de Diseño en Android: Soluciones y Aplicación Práctica

2

Fundamentos de Arquitectura de Software y su Impacto en Proyectos

3

Arquitecturas en Android: MVC y MVVM

4

Desarrollo de una Billetera Virtual con Git y Android Studio

5

Arquitectura MVP: Modelo, Vista y Presentador en Desarrollo de Software

6

Arquitectura MVP: Implementación en Proyectos Android

7

Implementación de Arquitectura MVP en Android

8

Implementación de Loaders en Arquitectura MVP con Android

9

Arquitectura MVVM en Android: Comunicación entre Capas

Patrones de diseño

10

Patrones de Diseño en Android: Creacionales, Estructurales y Comportamiento

Patrones de diseño creacionales

11

Implementación del Patrón Singleton en Kotlin para Android

12

Patrón Singleton en Kotlin para Gestión de Estados en Android

13

Patrón Builder en Android: Creación de Objetos Complejos

14

Implementación del Patrón Builder en Clases de Usuario

15

Funciones de Alcance en Kotlin: Uso de Apply

16

Patrón Factory: Creación y Uso en Desarrollo de Software

Patrones de diseño estructurales

17

Patrón de Diseño Adaptador para Transformar Datos en Clases Java

18

Aplicación del Patrón Proxy en Transferencias Seguras

19

Patrón de Diseño Fast Add en Aplicaciones Android

Patrones de comportamiento

20

Patrones de Diseño: Implementación del Patrón Observer en Proyectos

21

Patrón Observer en Android: Implementación y Uso Práctico

22

Patrón Comando: Implementación y Gestión de Comandos en Kotlin

23

Comandos para Guardar y Leer Archivos en Android

24

Ejecución de Comandos y Debugging en Android Studio

Bonus: Architecture Components

25

Componentes de Android Jetpack para Mejora de Aplicaciones

26

Implementación de LiveData en Android para Ciclo de Vida

27

Implementación de Room en Android para Gestión de Base de Datos

28

Creación de Entidades y DAO en Base de Datos con Room en Kotlin

29

Conexión y manejo de transferencias en Room Database

30

Implementación de ViewModel en Arquitectura MVVM en Android

Bonus: Custom View

31

Creación de Vistas Personalizadas en Android con Custom View

Conclusiones

32

Patrones de Diseño y Componentes de Texto en Android

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Patrón Comando: Implementación y Gestión de Comandos en Kotlin

22/32
Recursos

¿Qué es el patrón Command y cómo se utiliza?

El patrón Command es un patrón de diseño de comportamiento que se encarga de encapsular solicitudes como objetos, permitiéndote parametrizar clientes con comandos, filas de solicitudes o registros de operaciones. La clave de este patrón radica en encapsular la lógica en pequeños "comandos". Estos comandos no solo son manejables, sino que también son controlados por una entidad conocida como el Command Manager.

¿Cuándo se debe implementar el patrón Command?

La implementación del patrón Command es ideal cuando detectas lógicas o procesos repetitivos a lo largo del proyecto. Al encapsular estas lógicas en comandos, optimizas el código y facilitas la reutilización. Además, el Command Manager ofrece una forma sencilla de gestionar y ejecutar estos comandos bajo demanda.

¿Cómo se implementa el patrón Command?

La implementación del patrón Command sigue un esquema estructurado:

  1. Creación de comandos: Los comandos se encapsulan en interfaces específicas con funciones claras.
  2. Command Manager: Una clase que maneja la vida útil de los comandos permitiendo agregarlos, quitarlos y ejecutarlos.

Implementación paso a paso

  1. Crear el paquete Command:

    Primero, crea un paquete que albergará todos los comandos de tu proyecto, así:

    package com.example.comand
    
    interface FileCommand {
        fun execute(context: Context, fileName: String, vararg args: String)
    }
    
  2. Diseñar la interfaz del comando:

    Aquí definimos la estructura básica que cada comando debe seguir.

    interface FileCommand {
        fun execute(context: Context, fileName: String, vararg args: String)
    }
    
  3. Implementación del Command Manager:

    Un manager es crucial para gestionar los comandos. Facilita la agregación, eliminación y ejecución de comandos.

    class FileCommandManager {
        private val commands = mutableMapOf<String, FileCommand>()
    
        fun putCommand(name: String, command: FileCommand) {
            commands[name] = command
        }
    
        fun getCommand(name: String): FileCommand {
            return commands[name] ?: throw RuntimeException("Command $name not registered")
        }
    }
    
  4. Agregar y solicitar comandos:

    Puedes poner comandos en el manager y solicitarlos conforme sea necesario.

    val manager = FileCommandManager()
    
    fun addCommands() {
        manager.putCommand("SaveFile", SaveFileCommand())
    }
    
    fun executeCommand(name: String, context: Context, fileName: String) {
        val command = manager.getCommand(name)
        command.execute(context, fileName)
    }
    

Consejos para aprovechar el patrón Command

  • Maximiza la reutilización: Al encapsular lógicas comunes en comandos, facilitas la reutilización en diferentes partes del proyecto.
  • Gestión centralizada: Usa el Command Manager para centralizar el control de comandos, lo que simplifica la administración de lógicas complejas.
  • Flexibilidad: Permite la adición y eliminación de comandos en tiempo de ejecución sin alterar el código base principal.

El patrón Command no solo organiza, sino que también permite mayor flexibilidad y capacidad de gestión sobre el flujo y la ejecución de procesos en tu proyecto. ¿Estás listo para implementar el patrón Command en tu proyecto y mejorar su arquitectura?

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Encapsular lógicas en pequeños comandos. Estos comandos van a ser manejados por una ente llamado Command Manager. A ese Command manager le podemos poner en tiempo de ejecución los comandos y también le podremos pedir en tiempo de ejecución esos comandos.

COMMAND
Separa acciones que pueden ser ejecutadas desde varios puntos diferentes de la aplicación a través de una interfaz sencilla.
¿Cuándo usarlo?
Si hay fragmentos de código que se ejecutan, o son partes de una serie de ejecuciones y se repiten, los encapsulamos en un comando y van a poder ser ejecutados o cambiados sin impactar el código.

Al patron Command también se le suele agrgar un método undo a la par de execute, pero para que haga lo inverso del execute. Y puede ser usado con un Ctrl + Z para deshacer una acción.

Command encapsula logicas en comandos que se manejan a traves de una interfaz sencilla.
Recordatorio: El operador Double Bang (!!) trabaja con NullPointerExceptions

Separa acciones que pueden ser ejecutadas desde diferentes puntos de la aplicación a través de una interfaz sencilla. Los comandos son administrados por una clase llamada CommandManager, a este se le puede agregar en tiempo de ejecución comandos y posteriormente ejecutarlos.  Se debe usar cuando hay lógica de negocio que es repetitiva en la app, todos los encapsulamos en un comando y podrán ser invocados desde cualquier parte del código.