Sobes.tech
Junior — Middle

Ako zabezpečiť, aby bol modul systému otvorený pre rozšírenie, ale zatvorený pre úpravy?

sobes.tech AI

Odpoveď od AI

Aby bol modul systému otvorený na rozšírenie, ale zatvorený na zmenu, aplikuje sa princíp otvorenosti/zatvorenosti (Open/Closed Principle) z SOLID.

Toto sa dosahuje:

  • Použitím abstrakcií (rozhraní, abstraktných tried), ktoré definujú správanie modulu.
  • Implementáciou nových funkcií prostredníctvom dedičstva alebo kompozície, bez zmeny zdrojového kódu modulu.
  • Použitím návrhových vzorov, ako je Stratégia (Strategy) alebo Dekorátor (Decorator), ktoré umožňujú pridávať správanie dynamicky.

Príklad v Dart (Flutter):

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

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

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

// Modul používa abstrakciu PaymentProcessor a môže byť rozšírený o nové spôsoby platby bez zmeny existujúceho kódu.