Junior — Middle
Milline disainimuster on parim objekti loomisel, arvestades erinevaid rakendustingimusi?
sobes.tech AI
Vastus AI-lt
Loomaks objekti erinevate rakendustingimustega, on kõige parem kasutada disainimust "Tehas" (Factory) või "Abstraktne tehas" (Abstract Factory).
See muster võimaldab kapseldada objektide loomise loogika ja valida konkreetse klassi loomise ajal vastavalt tingimustele tööajal.
Näide lihtsast tehase meetodist:
interface LoggerInterface {
public function log(string $message);
}
class FileLogger implements LoggerInterface {
public function log(string $message) {
// kirjutamine faili
}
}
class DatabaseLogger implements LoggerInterface {
public function log(string $message) {
// kirjutamine andmebaasi
}
}
class LoggerFactory {
public static function create(string $type): LoggerInterface {
if ($type === 'file') {
return new FileLogger();
} elseif ($type === 'db') {
return new DatabaseLogger();
}
throw new Exception('Tundmatu loggeri tüüp');
}
}
$logger = LoggerFactory::create('file');
$logger->log('Sõnum');
Sel viisil saab objekti luua paindlikult vastavalt tingimustele.