Interface Segregation Principle (ISP)
Założenie: Pokażemy, jak zastosować zasadę segregacji interfejsów (ISP) w PHP, aby uniknąć tworzenia dużych, niepotrzebnie rozbudowanych interfejsów.
Krok po kroku:
- Zły przykład – jeden duży interfejs: Załóżmy, że mamy interfejs
Worker
, który definiuje metody dla różnych typów pracowników: -
interface Worker { public function work(); public function eatLunch(); public function cleanOffice(); } class Programmer implements Worker { public function work() { echo "Programuję!\n"; } public function eatLunch() { echo "Jem lunch!\n"; } public function cleanOffice() { echo "Sprzątam biuro!\n"; } // Programista nie musi sprzątać! } class Cleaner implements Worker { public function work() { echo "Sprzątam!\n"; } public function eatLunch() { echo "Jem lunch!\n"; } public function cleanOffice() { echo "Sprzątam biuro!\n"; } }
Widzimy, że programista nie musi implementować metody `cleanOffice()`, co narusza zasadę ISP.
- Dobry przykład – wiele mniejszych interfejsów: Rozbijmy interfejs
Worker
na mniejsze, bardziej specyficzne interfejsy: -
interface Workable { public function work(); } interface Eatable { public function eatLunch(); } interface Cleanable { public function cleanOffice(); } class Programmer implements Workable, Eatable { public function work() { echo "Programuję!\n"; } public function eatLunch() { echo "Jem lunch!\n"; } } class Cleaner implements Workable, Eatable, Cleanable { public function work() { echo "Sprzątam!\n"; } public function eatLunch() { echo "Jem lunch!\n"; } public function cleanOffice() { echo "Sprzątam biuro!\n"; } }
Teraz każdy obiekt implementuje tylko te metody, które są mu potrzebne.
Podsumowanie: Ten przykład pokazuje, jak zastosowanie zasady segregacji interfejsów (ISP) prowadzi do bardziej elastycznego i łatwiejszego w utrzymaniu kodu. Zachęcamy do dalszego zgłębiania zasad SOLID w programowaniu obiektowym!