Sobes.tech
Junior — Middle

Jak zajistit, aby modul systému byl otevřený pro rozšíření, ale uzavřený pro úpravy?

sobes.tech AI

Odpověď od AI

Aby byl systémový modul otevřený pro rozšíření, ale uzavřený pro změny, je použit princip otevřenosti/zavřenosti (Open/Closed Principle) z SOLID.

Toho se dosahuje:

  • Použitím abstrakcí (rozhraní, abstraktních tříd), které definují chování modulu.
  • Implementací nových funkcí prostřednictvím dědičnosti nebo kompozice, aniž by se měnil zdrojový kód modulu.
  • Použitím návrhových vzorů, například Strategie (Strategy) nebo Dekorátor (Decorator), které umožňují přidávat chování dynamicky.

Příklad v Dart (Flutter):

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

class CreditCardProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Platba $amount kreditní kartou');
  }
}

class PayPalProcessor implements PaymentProcessor {
  @override
  void pay(double amount) {
    print('Platba $amount přes PayPal');
  }
}

// Modul používá abstrakci PaymentProcessor a může být rozšířen o nové platební metody bez změny stávajícího kódu.