Dediğim gibi bir sınıf genişletmek için gidiyoruz eğer, daha sonra her zaman değiştirebilirsiniz.
Ama sen gerektiği miras kullanmayı önlemek eğer. Bu tasarımı yaparken eğer mümkünse, diğer desenleri kullanmak daha iyidir.
Temelde ne yapmak arayüzleri değil, uygulamaları miras ve program üzerinde iyilik bileşimidir.
Eğer izin verirseniz sınıfları sadece yerine onları birbirinden miras icar nesneleri kompozit için daha bir sıkıca tanımlanmış bir amacı var. Eğer arayüzleri kullanın ziyade çoğu likley küçük ve etkin arayüzleri belirleyecek miras. Sonra o miras azaltacaktır ve bu nedenle koruma ihtiyacı azaltmak göreceksiniz.
Örnek
interface sound {
public function makeSound();
}
class bark implements sound{
public function makeSound() {
return "Bark!!!";
}
}
class mew implements sound{
public function makeSound() {
return "Mewmew!!!";
}
}
class forLeggedAnimal {
private $sound;
public function forLeggedAnimal($sound){
$this->sound = $sound;
}
public function eat(){
echo $this->sound->makeSound();
}
}
$cat = new forLeggedAnimal(new mew());
$dog = new forLeggedAnimal(new bark());
Ben çok mükemmel bir örnek bu biliyorum. Ama bu tekniği göstermektedir ve birçok şekillerde kullanabilirsiniz. Örneğin siz kedi ve köpekler oluşturmak için farklı yaradılış desenleri ile birleştirebilirsiniz, bu bir kedi havlamaları veya mews olmadığını bilmek zorunda bu yüzden akıllıca olmayabilir .. Ama neyse .. bir temel sınıf yapmak zorunda ve sonra uzanan farklıdır "ses" yöntemi korumalı veya kamu geçersiz kılma yapmak zorunda bunun bir kedi ve bir köpek, ve onunla yöntemi yemek
/ Peter