Для создания объекта с разными условиями внедрения лучше всего применить шаблон проектирования «Фабрика» (Factory) или «Абстрактная фабрика» (Abstract Factory).
Какой шаблон проектирования лучше всего применить при создании объекта, учитывая разные условия внедрения?
Для создания объекта с разными условиями внедрения лучше всего применить шаблон проектирования «Фабрика» (Factory) или «Абстрактная фабрика» (Abstract Factory).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для создания объекта с разными условиями внедрения лучше всего применить шаблон проектирования «Фабрика» (Factory) или «Абстрактная фабрика» (Abstract 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) {
// запись в базу данных
}
}
class LoggerFactory {
public static function create(string $type): LoggerInterface {
if ($type === 'file') {
return new FileLogger();
} elseif ($type === 'db') {
return new DatabaseLogger();
}
throw new Exception('Unknown logger type');
}
}
$logger = LoggerFactory::create('file');
$logger->log('Сообщение');
Таким образом, можно гибко создавать объекты в зависимости от условий.