Klasy abstrakcyjne a zasady SOLID
Założenie: Pokażemy, jak klasa abstrakcyjna pomaga w implementacji zasady odwrócenia zależności (DIP) z SOLID.
Krok po kroku:
- Definicja interfejsu: Zdefiniujmy interfejs dla działania, które ma być wykonywane przez różne klasy.
- Klasa abstrakcyjna: Utwórzmy klasę abstrakcyjną, która częściowo implementuje interfejs i definiuje wspólne zachowania.
- Konkretne implementacje: Stwórzmy konkretne klasy implementujące
AbstractPaymentMethod
. - Użycie: Możemy teraz używać tych klas bez konieczności znajomości ich szczegółów implementacji.
Ten kod definiuje interfejs PaymentMethod
z metodą processPayment
. Różne metody płatności będą implementować ten interfejs.
doPayment($amount);
}
abstract protected function doPayment(float $amount): bool;
}
?>
Klasa AbstractPaymentMethod
implementuje processPayment
, ale pozostawia część specyficzną dla danej metody płatności w abstrakcyjnej metodzie doPayment
.
Klasy CreditCardPayment
i PayPalPayment
implementują metodę doPayment
, definiując specyficzną logikę dla każdej metody płatności.
processPayment(100.0);
$payment = new PayPalPayment();
$payment->processPayment(50.0);
?>
Ten kod demonstruje, jak łatwo zmienić metodę płatności bez modyfikacji kodu klienta.
Ten przykład pokazuje, jak klasy abstrakcyjne pomagają w implementacji zasady DIP, umożliwiając łatwe dodawanie nowych metod płatności bez modyfikacji istniejącego kodu. Zachęcamy do dalszego zgłębiania tematu klas abstrakcyjnych i wzorców projektowych!