Junior — Middle
Jaki wzorzec projektowy jest najlepszy do zastosowania przy tworzeniu obiektu, biorąc pod uwagę różne warunki wdrożenia?
sobes.tech AI
Odpowiedź od AI
Aby utworzyć obiekt z różnymi warunkami wdrożenia, najlepiej zastosować wzorzec projektowy "Fabryka" (Factory) lub "Abstrakcyjna Fabryka" (Abstract Factory).
Ten wzorzec pozwala na enkapsulację logiki tworzenia obiektów i wybór konkretnej klasy do tworzenia w zależności od warunków podczas wykonywania.
Przykład prostego metody fabrycznej:
interface LoggerInterface {
public function log(string $message);
}
class FileLogger implements LoggerInterface {
public function log(string $message) {
// zapis do pliku
}
}
class DatabaseLogger implements LoggerInterface {
public function log(string $message) {
// zapis do bazy danych
}
}
class LoggerFactory {
public static function create(string $type): LoggerInterface {
if ($type === 'file') {
return new FileLogger();
} elseif ($type === 'db') {
return new DatabaseLogger();
}
throw new Exception('Nieznany typ loggera');
}
}
$logger = LoggerFactory::create('file');
$logger->log('Wiadomość');
W ten sposób można elastycznie tworzyć obiekty w zależności od warunków.