class-adapter-design-pattern

Bir Ara Yüze( interface )Yeni Bir Method eklemek İstediğimizde Ona Bağlı Bütün Sınıflara aynı Method Eklemek Zorundayız.
Böyle Bir Durum Ortaya Çıktığında Ara Yüzü Değiştimek Yerine Başka Bir Ara Yüz Yaratarak Esas Ara Yüzü extends İle Yeni Ara Yüze Ekleyerek Sorunu Çözeriz.
<?php
interface magaza{
public function uruntoplam($fiyat);
}
interface magaza2 extends magaza{
public function geturun($fiyat);
}
class sepet2 implements magaza2{
public $urunler;
public function urunler($urunler){
foreach($urunler as $sira=>$ad){
echo $ad.'<br>';
}
$this->urunler=$urunler;
}
public function uruntoplam($fiyat){
echo array_sum($fiyat);
}
public function geturun($id){
echo $this->urunler[$id];
}
}
$sepet= new sepet2();
$sepet->urunler(array("elma","armut","kiraz"));
$sepet->geturun(1);
$sepet->uruntoplam(array(1.20,2,0.50));
?>

Çıktısı :
elma
armut
kiraz
armut3.7