Sobes.tech
Junior — Middle

¿Cómo se puede garantizar que un módulo del sistema esté abierto para la extensión, pero cerrado para la modificación?

sobes.tech AI

Respuesta de la IA

Para que un módulo del sistema esté abierto a la extensión, pero cerrado a la modificación, se aplica el principio de apertura/cierre (Principio Abierto/Cerrado) de SOLID.

Esto se logra mediante:

  • Uso de abstracciones (interfaces, clases abstractas), que definen el comportamiento del módulo.
  • Implementación de nuevas funcionalidades a través de herencia o composición, sin cambiar el código fuente del módulo.
  • Uso de patrones de diseño, como Estrategia (Strategy) o Decorador (Decorator), que permiten agregar comportamiento de forma dinámica.

Ejemplo en Dart (Flutter):

abstract class PaymentProcessor {
  void pay(double amount);
}

class CreditCardProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Pago de $amount con tarjeta de crédito');
  }
}

class PayPalProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Pago de $amount a través de PayPal');
  }
}

// El módulo usa la abstracción PaymentProcessor y puede extenderse con nuevos métodos de pago sin cambiar el código existente.