Sobes.tech
Junior — Middle

Opíšte svoje skúsenosti s implementáciou návrhových vzorov s použitím abstraktných rozhraní a konceptov.

sobes.tech AI

Odpoveď od AI

V mojich skúsenostiach s PHP som často používal vzory návrhu založené na abstraktných rozhraniach a konceptoch na zvýšenie flexibility a rozšíriteľnosti kódu. Napríklad pri implementácii vzoru "Fabrika" (Factory) som vytváral rozhranie pre produkty a konkrétne triedy implementovali toto rozhranie. Abstraktné rozhranie umožňovalo klientskemu kódu pracovať s produktmi bez znalosti ich konkrétnych tried.

Príklad:

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

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

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

function process(LoggerInterface $logger) {
    $logger->log('Začiatok procesu');
}

// Je ľahké meniť implementáciu loggera bez zmeny funkcie process
process(new FileLogger());

Tento prístup umožňuje ľahké pridávanie nových implementácií, testovanie kódu a dodržiavanie princípov SOLID, najmä Inversion of Control a Open/Closed princípu.