Sobes.tech
Junior — Middle

Come si può garantire che un modulo di sistema sia aperto all'estensione, ma chiuso alla modifica?

sobes.tech AI

Risposta dell'AI

Per rendere un modulo di sistema aperto all'estensione ma chiuso alla modifica, si applica il principio di apertura/chiusura (Open/Closed Principle) di SOLID.

Ciò si ottiene tramite:

  • Uso di astrazioni (interfacce, classi astratte) che definiscono il comportamento del modulo.
  • Implementazione di nuove funzionalità tramite ereditarietà o composizione, senza modificare il codice sorgente del modulo.
  • Applicazione di pattern di progettazione come Strategia (Strategy) o Decoratore (Decorator), che consentono di aggiungere comportamenti in modo dinamico.

Esempio in Dart (Flutter):

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

class CreditCardProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Pagamento di $amount con carta di credito');
  }
}

class PayPalProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Pagamento di $amount tramite PayPal');
  }
}

// Il modulo utilizza l'astrazione PaymentProcessor e può essere esteso con nuovi metodi di pagamento senza modificare il codice esistente.