Sobes.tech
Junior — Middle

Care este cel mai bun model de proiectare de aplicat atunci când creezi un obiect, luând în considerare diferite condiții de implementare?

sobes.tech AI

Răspuns de la AI

Pentru a crea un obiect cu condiții diferite de implementare, este cel mai bine să aplicați șablonul de proiectare "Fabrica" (Factory) sau "Fabrica Abstractă" (Abstract Factory).

Acest șablon permite încapsularea logicii de creare a obiectelor și alegerea clasei concrete pentru creare în funcție de condiții în timpul execuției.

Exemplu de metodă simplă de fabrică:

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

class FileLogger implements LoggerInterface {
    public function log(string $message) {
        // scriere în fișier
    }
}

class DatabaseLogger implements LoggerInterface {
    public function log(string $message) {
        // scriere în bază de date
    }
}

class LoggerFactory {
    public static function create(string $type): LoggerInterface {
        if ($type === 'file') {
            return new FileLogger();
        } elseif ($type === 'db') {
            return new DatabaseLogger();
        }
        throw new Exception('Tip de logger necunoscut');
    }
}

$logger = LoggerFactory::create('file');
$logger->log('Mesaj');

Astfel, se pot crea obiecte în mod flexibil în funcție de condiții.