Back to questions
Альфа Капитал
Senior
3
Чем GoF паттерн Медиатор отличается от Прокси?
Companies where asked
Answer from AI
sobes.tech AI
Паттерн Медиатор и Прокси решают разные задачи и имеют разные цели:
-
Медиатор (Mediator) — это поведенческий паттерн, который централизует взаимодействие между объектами. Вместо того, чтобы объекты напрямую взаимодействовали друг с другом, они общаются через медиатора, который координирует их работу. Это уменьшает связанность между компонентами и упрощает управление сложными взаимодействиями.
-
Прокси (Proxy) — это структурный паттерн, который предоставляет суррогат или заместителя для другого объекта, контролируя доступ к нему. Прокси может добавлять дополнительную логику (например, ленивую инициализацию, кэширование, контроль доступа) без изменения самого объекта.
Ключевые отличия:
- Медиатор управляет взаимодействием между множеством объектов, выступая как центральный координатор.
- Прокси контролирует доступ к одному объекту, выступая как его представитель.
Пример:
// Медиатор
interface Mediator {
void notify(Component sender, String event);
}
class ConcreteMediator implements Mediator {
private Component1 c1;
private Component2 c2;
public void setComponents(Component1 c1, Component2 c2) {
this.c1 = c1;
this.c2 = c2;
}
@Override
public void notify(Component sender, String event) {
if (event.equals("A")) {
c2.doC();
} else if (event.equals("B")) {
c1.doD();
}
}
}
// Прокси
interface Service {
void request();
}
class RealService implements Service {
public void request() {
System.out.println("Выполнение запроса");
}
}
class ProxyService implements Service {
private RealService realService;
public void request() {
if (realService == null) {
realService = new RealService(); // ленивое создание
}
System.out.println("Прокси: дополнительная логика перед вызовом");
realService.request();
}
}