Alt sınıfları bazı benzersiz özelliklere sahip sınıfları, bir hiyerarşi kullanarak

0 Cevap php

İşte bazen çalıştırmak bir tasarım sorunu var. Ben bazı ortak özellikler ve bazı benzersiz olanları ile ilgili sınıfların bir dizi var ki;

interface TableCell {
    public function setContent($content);
}
interface HTMLTableCell extends TableCell {
    public function setID($id);
    public function setClass($class);
}
interface CSVTableCell extends TableCell {
    public function setQuoted($quoted);
}

Sonra kümesinden herhangi bir nesne ile etkileşim için gereken bazı sınıfları var. Bu ortak yöntemleri kullanmak kolaydır. Ama sınıf onlar mevcut olduğunuzda, hem de benzersiz yöntemler kullanmak mümkün istiyorum:

class NumberCell {
    public function render(TableCell $cell) {
        $cell->setContent("123.45");
        // if this is a HTMLTableCell
        $cell->setClass("number");
    }
}

Bu işlemek için en iyi yolu nedir? Zamanında türünün kontrolü tür hacky görünüyor. Ben tasarımını değiştirerek açığım.

0 Cevap