Sobes.tech
Junior — Middle

Qual è il modello di progettazione migliore da applicare nella creazione di un oggetto, considerando diverse condizioni di implementazione?

sobes.tech AI

Risposta dell'AI

Per creare un oggetto con diverse condizioni di implementazione, è meglio utilizzare il pattern di progettazione "Factory" o "Abstract Factory".

Questo pattern consente di incapsulare la logica di creazione degli oggetti e di scegliere la classe concreta da creare in base alle condizioni durante l'esecuzione.

Esempio di un metodo di fabbrica semplice:

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

class FileLogger implements LoggerInterface {
    public function log(string $message) {
        // scrittura su file
    }
}

class DatabaseLogger implements LoggerInterface {
    public function log(string $message) {
        // scrittura nel database
    }
}

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 di logger sconosciuto');
    }
}

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

In questo modo, è possibile creare oggetti in modo flessibile in base alle condizioni.