Sobes.tech
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.