Back to questions
Junior — Middle
97
Опиши свой опыт внедрения шаблонов проектирования с применением абстрактных интерфейсов и концепций.
Companies where asked
АО Тривио
Answer from AI
sobes.tech 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.