Sobes.tech
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.