Назад к вопросам
Junior — Middle
64
Можете объяснить основные отличия между шаблонами Adapter, Facade и Proxy и в каких ситуациях их лучше использовать?
Компании, где спрашивали
Prooftech
Ответ от нейросети
sobes.tech AI
Основные отличия между шаблонами Adapter, Facade и Proxy:
-
Adapter (Адаптер): Позволяет объектам с несовместимыми интерфейсами работать вместе. Он преобразует интерфейс одного класса в интерфейс, ожидаемый клиентом.
- Используется, когда нужно интегрировать существующий класс с новым интерфейсом.
-
Facade (Фасад): Предоставляет упрощённый интерфейс к сложной подсистеме, скрывая её внутреннюю сложность.
- Используется для упрощения взаимодействия с большим количеством классов.
-
Proxy (Заместитель): Контролирует доступ к другому объекту, может добавлять дополнительную логику (например, ленивую инициализацию, кэширование, безопасность).
- Используется, когда нужно управлять доступом или добавлять поведение без изменения оригинального объекта.
Пример ситуаций:
- Adapter: интеграция старого API с новым интерфейсом.
- Facade: предоставление простого API для сложной библиотеки.
- Proxy: реализация отложенной загрузки ресурса или контроль доступа.
Пример Adapter на Java:
interface Target {
void request();
}
class Adaptee {
void specificRequest() { System.out.println("Специфический запрос"); }
}
class Adapter implements Target {
private Adaptee adaptee = new Adaptee();
public void request() {
adaptee.specificRequest();
}
}