Junior — Middle
Qual padrão de projeto é melhor aplicar ao criar um objeto, considerando diferentes condições de implementação?
sobes.tech IA
Resposta da IA
Para criar um objeto com diferentes condições de implementação, é melhor usar o padrão de projeto "Fábrica" (Factory) ou "Fábrica Abstrata" (Abstract Factory).
Este padrão permite encapsular a lógica de criação de objetos e escolher a classe concreta a criar com base nas condições em tempo de execução.
Exemplo de um método de fábrica simples:
interface LoggerInterface {
public function log(string $message);
}
class FileLogger implements LoggerInterface {
public function log(string $message) {
// gravação em ficheiro
}
}
class DatabaseLogger implements LoggerInterface {
public function log(string $message) {
// gravação na base de dados
}
}
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 de logger desconhecido');
}
}
$logger = LoggerFactory::create('file');
$logger->log('Mensagem');
Desta forma, é possível criar objetos de forma flexível dependendo das condições.