Dziedziczenie a optymalizacja

Założenie: Pokażemy, jak niewłaściwe użycie dziedziczenia może wpływać na wydajność i jak temu zapobiegać.

Krok po kroku:

  1. Zły przykład: Niepotrzebne dziedziczenie.
  2. 
    class Animal {
        public function makeSound() {
            echo "Generic animal sound\n";
        }
    }
    
    class Dog extends Animal {
        public function bark() {
            echo "Woof!\n";
        }
    }
    
    class Cat extends Animal {
        public function meow() {
            echo "Meow!\n";
        }
    }
    
    $dog = new Dog();
    $dog->makeSound(); // Dziedziczymy niepotrzebną metodę makeSound()
    $dog->bark();
    
    $cat = new Cat();
    $cat->makeSound(); // Dziedziczymy niepotrzebną metodę makeSound()
    $cat->meow();
    				

    W tym przykładzie klasy `Dog` i `Cat` dziedziczą metodę `makeSound()`, która nie jest dla nich potrzebna. To prowadzi do niepotrzebnego obciążenia pamięci i może spowalniać aplikację, szczególnie przy dużej liczbie obiektów.

  3. Dobry przykład: Kompozycja zamiast dziedziczenia.
  4. 
    interface SoundMaker {
        public function makeSound();
    }
    
    class Dog implements SoundMaker {
        public function makeSound() {
            echo "Woof!\n";
        }
    }
    
    class Cat implements SoundMaker {
        public function makeSound() {
            echo "Meow!\n";
        }
    }
    
    $dog = new Dog();
    $dog->makeSound();
    
    $cat = new Cat();
    $cat->makeSound();
    				

    W tym przykładzie używamy interfejsu `SoundMaker` i kompozycji. Klasy `Dog` i `Cat` implementują tylko metody, które są dla nich istotne, co poprawia czytelność i wydajność.

Podsumowanie: Ten przykład pokazuje, jak niewłaściwe użycie dziedziczenia może negatywnie wpłynąć na wydajność kodu. Kompozycja jest często lepszą alternatywą. Zachęcamy do dalszego zgłębiania tematu programowania obiektowego w PHP!

Dodaj komentarz 0

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