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:
- Zły przykład: Niepotrzebne dziedziczenie.
- Dobry przykład: Kompozycja zamiast dziedziczenia.
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.
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!