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:

  1. 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:
  2. 
    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.

  3. Dobry przykład – wiele mniejszych interfejsów: Rozbijmy interfejs Worker na mniejsze, bardziej specyficzne interfejsy:
  4. 
    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!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *