Junior — Middle
Qual è il modello di progettazione migliore da applicare nella creazione di un oggetto, considerando diverse condizioni di implementazione?
sobes.tech AI
Risposta dell'AI
Per creare un oggetto con diverse condizioni di implementazione, è meglio utilizzare il pattern di progettazione "Factory" o "Abstract Factory".
Questo pattern consente di incapsulare la logica di creazione degli oggetti e di scegliere la classe concreta da creare in base alle condizioni durante l'esecuzione.
Esempio di un metodo di fabbrica semplice:
interface LoggerInterface {
public function log(string $message);
}
class FileLogger implements LoggerInterface {
public function log(string $message) {
// scrittura su file
}
}
class DatabaseLogger implements LoggerInterface {
public function log(string $message) {
// scrittura nel database
}
}
class LoggerFactory {
public static function create(string $type): LoggerInterface {
if ($type === 'file') {
return new FileLogger();
} elseif ($type === 'db') {
return new DatabaseLogger();
}
throw new Exception('Tipo di logger sconosciuto');
}
}
$logger = LoggerFactory::create('file');
$logger->log('Messaggio');
In questo modo, è possibile creare oggetti in modo flessibile in base alle condizioni.