Junior — Middle
Kuidas tagada, et süsteemi moodul oleks avatud laiendamiseks, kuid suletud muudatustele?
sobes.tech AI
Vastus AI-lt
Süsteemi moodul peab olema avatud laiendamiseks, kuid suletud muudatustele, rakendades SOLID-i avatud/suletud põhimõtet.
See saavutatakse:
- Kasutades abstraktsioone (liideseid, abstraktseid klasse), mis määratlevad mooduli käitumise.
- Uute funktsionaalsuste rakendamise kaudu pärimise või koostisega, ilma olemasolevat koodi muutmata.
- Kasutades disainimustreid nagu Strateegia (Strategy) või Dekoratiiv (Decorator), mis võimaldavad käitumist dünaamiliselt lisada.
Näide Dartis (Flutter):
abstract class PaymentProcessor {
void pay(double amount);
}
class CreditCardProcessor implements PaymentProcessor {
@override
void pay(double amount) {
print('Makse $amount krediitkaardiga');
}
}
class PayPalProcessor implements PaymentProcessor {
@override
void pay(double amount) {
print('Makse $amount PayPali kaudu');
}
}
// Moodul kasutab abstraktsiooni PaymentProcessor ja võib laieneda uute makseviisidega ilma olemasolevat koodi muutmata.