Olaf Schneider: Wie zwinge ich eine Unterklasse zum Setzen einer Variablen?

Beitrag lesen

Hallo Eddie,

ich finde diese Lösung nicht so ideal.

Deine abstrakte Klasse Search macht die ganze Arbeit alleine und implementiert schon zwei verschiedene konkrete Escapingalgorithmen, anstatt wirklich zu abstrahieren.

Wenn Deine Klasse so aussieht, was ist an Search überhaupt abstrakt und wofür brauchst Du dann überhaupt noch abgeleitete konkrete Klassen?

Ich würde eher so denken:

Die abstrakte Klasse definiert, _was_ getan werden muss (Escapen – wie ist egal)

Die konkreten Klassen definieren, _wie_ das getan werden muss.

Wie Sven vorgeschlagen hat, könnte eine Factory/Fabrik die Erzeugung konkreter Objekte übernehmen und entscheiden, ob ein DBSearch- oder ein FileSearchobjekt zurück gegeben wird.

  
$search = SearchFactory::getInstance($param1, $param2, $param3);  

Gruß
Olaf