Порождающие паттерны ООП
Список вопросов теста
Вопрос 1
Сопоставьте паттерн с его описанием:
1.
Одиночка (Singleton)
2.
Строитель (Builder)
3.
Абстрактная фабрика (Abstract Factory)
4.
Фабричный метод (Factory Method)
5.
Прототип (Prototype)
Варианты ответов
- Гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.
- Отделяет конструирование сложного объекта от его представления, так что в результате одного и того же процесса конструирования могут получаться разные представления.
- Определяет общий интерфейс для создания объектов, но позволяет подклассам изменять тип создаваемых объектов.
- Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.
- Позволяет копировать объекты, не вдаваясь в подробности их реализации.
Вопрос 2
Какой паттерн вы бы выбрали для решения следующих задач? Создание сложного объекта (например, Computer) с множеством опциональных параметров (оперативная память, жесткий диск, видеокарта и т.д.), который должен быть неизменяемым (immutable).
Варианты ответов
- Factory (Фабрика)
- Prototype (Прототип)
- Builder (Строитель)
Вопрос 3
Какой паттерн вы бы выбрали для решения следующих задач?
Гарантировать, что в системе существует только один экземпляр класса, отвечающего за настройки приложения (Configuration).
Варианты ответов
- Multiton
- Registry
- Singleton
Вопрос 4
Какой паттерн вы бы выбрали для решения следующих задач?
Создавать различные UI-элементы (кнопки, текстовые поля) для разных операционных систем (Windows, macOS), обеспечивая, чтобы все элементы в одном приложении были выдержаны в одном стиле.
Варианты ответов
- Factory
- Builder
- Abstract factory
Вопрос 5
Какой паттерн вы бы выбрали для решения следующей задачи?
Задача: Вам необходимо разработать систему для создания сложных объектов Дом (House), которые могут иметь разное количество этажей, стен, окон, а также опциональные элементы (гараж, бассейн, сад). Процесс строительства должен быть одинаковым для всех типов домов, но конечный результат (деревянный коттедж, стеклянный небоскреб) должен отличаться. Какой порождающий паттерн наиболее подходит?
Варианты ответов
- Фабричный метод (Factory Method)
- Абстрактная фабрика (Abstract Factory)
- Строитель (Builder)
- Прототип (Prototype)
Вопрос 6
Утверждение: "Использование паттерна Абстрактная Фабрика (Abstract Factory) делает добавление новых продуктов в систему чрезвычайно сложным, так как требует изменения базового интерфейса фабрики и всех ее конкретных реализаций."
Варианты ответов
- Да
- Нет
Вопрос 7
Сценарий: Вы проектируете модуль для работы с различными типами кэшей (in-memory, Redis, Memcached). Вы хотите, чтобы основная бизнес-логика приложения не зависела от конкретной реализации кэша, и чтобы можно было легко подменять одну реализацию на другую, возможно, даже в runtime. Какой паттерн является наилучшим кандидатом для центрального управления жизненным циклом экземпляров кэша в этом сценарии?
Варианты ответов
- Использовать Фабричный метод, создав иерархию фабрик для каждого типа кэша.
- Внедрять зависимости через конструктор, создавая экземпляры кэша напрямую в composition root.
- Реализовать Одиночку для каждого типа кэша, чтобы гарантировать один экземпляр на тип.
- Использовать контейнер инверсии управления (IoC-контейнер), который по сути является сложной Абстрактной Фабрикой.


