Junior — Middle
Como garantir que um módulo do sistema esteja aberto à extensão, mas fechado à modificação?
sobes.tech IA
Resposta da IA
Para que um módulo do sistema esteja aberto à extensão, mas fechado à modificação, aplica-se o princípio de abertura/fechamento (Princípio Aberto/Fechado) do SOLID.
Isto é conseguido através de:
- Uso de abstrações (interfaces, classes abstratas), que definem o comportamento do módulo.
- Implementação de novas funcionalidades através de herança ou composição, sem alterar o código fonte do módulo.
- Aplicação de padrões de projeto, como Estratégia (Strategy) ou Decorador (Decorator), que permitem adicionar comportamento dinamicamente.
Exemplo em Dart (Flutter):
abstract class PaymentProcessor {
void pay(double amount);
}
class CreditCardProcessor implements PaymentProcessor {
@override
void pay(double amount) {
print('Pagamento de $amount com cartão de crédito');
}
}
class PayPalProcessor implements PaymentProcessor {
@override
void pay(double amount) {
print('Pagamento de $amount via PayPal');
}
}
// O módulo usa a abstração PaymentProcessor e pode ser estendido com novos métodos de pagamento sem alterar o código existente.