Sobes.tech
Junior — Middle

Který návrhový vzor je nejlepší použít při vytváření objektu s ohledem na různé podmínky implementace?

sobes.tech AI

Odpověď od AI

Pro vytvoření objektu s různými podmínkami implementace je nejlepší použít návrhový vzor "Továrna" (Factory) nebo "Abstraktní továrna" (Abstract Factory).

Tento vzor umožňuje zakrýt logiku vytváření objektů a vybírat konkrétní třídu pro vytvoření na základě podmínek za běhu.

Příklad jednoduché továrenské metody:

interface LoggerInterface {
    public function log(string $message);
}

class FileLogger implements LoggerInterface {
    public function log(string $message) {
        // zápis do souboru
    }
}

class DatabaseLogger implements LoggerInterface {
    public function log(string $message) {
        // zápis do databáze
    }
}

class LoggerFactory {
    public static function create(string $type): LoggerInterface {
        if ($type === 'file') {
            return new FileLogger();
        } elseif ($type === 'db') {
            return new DatabaseLogger();
        }
        throw new Exception('Neznámý typ loggeru');
    }
}

$logger = LoggerFactory::create('file');
$logger->log('Zpráva');

Tímto způsobem lze vytvářet objekty flexibilně v závislosti na podmínkách.