Entwurfsmuster · Frage 9 von 12

Ein Checkout-Service wählt die Zahlungsart per switch aus, jede neue Zahlungsart erfordert eine Änderung dieser Klasse. Welcher Umbau passt zum Open/Closed-Prinzip?

1 Antwort ist richtig. Mittel

Lösung anzeigen

Lösung

  • A Ein Interface PaymentProviderInterface mit #[AutoconfigureTag('myext.payment')], je Zahlungsart eine Klasse, und im Service #[AutowireIterator('myext.payment')] iterable $providers

Erklärung

Das Strategie-Muster kapselt jede Zahlungsart in einer eigenen Klasse mit gemeinsamem Interface. Über das Tag sammelt der Container alle Implementierungen, der Service fragt jede, ob sie zuständig ist. Neue Zahlungsarten, auch aus anderen Extensions, kommen ohne Änderung am Service hinzu. Ein ausgelagerter switch oder eine Sammelklasse muss weiterhin für jede neue Art geändert werden.

Zertifikate & Prüfungen

Welche Prüfung kommt als Nächstes?

19 Prüfungen kannst du schon üben, über 21 stimmst du gerade ab. Sieh dir alle Zertifikate mit offiziellen Infos an, gib deine Stimme ab oder schlag deine Prüfung vor.

Zur Zertifikatsübersicht