Sobes.tech
Junior — Middle

Опишете опита си в прилагането на шаблони за дизайн с използване на абстрактни интерфейси и концепции.

sobes.tech AI

Отговор от AI

В моя опит с PHP често съм използвал шаблони за проектиране, базирани на абстрактни интерфейси и концепции, за подобряване на гъвкавостта и разширяемостта на кода. Например, при реализиране на шаблона "Фабрика" (Factory), създавах интерфейс за продуктите, а конкретните класове реализираха този интерфейс. Абстрактният интерфейс позволяваше на клиентския код да работи с продуктите, без да знае техните конкретни класове.

Пример:

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

class FileLogger implements LoggerInterface {
    public function log(string $message) {
        // запис във файл
    }
}

class DatabaseLogger implements LoggerInterface {
    public function log(string $message) {
        // запис в база данни
    }
}

function process(LoggerInterface $logger) {
    $logger->log('Начало на процеса');
}

// Лесно е да смените реализацията на логера без да променяте функцията process
process(new FileLogger());

Този подход позволява лесно добавяне на нови реализации, тестване на кода и спазване на принципите SOLID, особено Dependency Inversion и Open/Closed.