Sobes.tech
Junior — Middle

Hoe kan worden gegarandeerd dat een systeemmodule openstaat voor uitbreiding, maar gesloten is voor modificatie?

sobes.tech AI

Antwoord van AI

Om een systeemmodule open te stellen voor uitbreiding, maar gesloten voor wijziging, wordt het Open/Closed-principe (SOLID) toegepast.

Dit wordt bereikt door:

  • Gebruik van abstracties (interfaces, abstracte klassen) die het gedrag van de module definiëren.
  • Implementatie van nieuwe functionaliteiten via overerving of compositie, zonder de broncode van de module te wijzigen.
  • Toepassing van ontwerp patronen zoals Strategie (Strategy) of Decorator (Decorator), die het mogelijk maken om gedrag dynamisch toe te voegen.

Voorbeeld in Dart (Flutter):

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

class CreditCardProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Betaling van $amount met creditcard');
  }
}

class PayPalProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Betaling van $amount via PayPal');
  }
}

// Het module gebruikt de abstractie PaymentProcessor en kan worden uitgebreid met nieuwe betaalmethoden zonder de bestaande code te wijzigen.