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.