Код IT
← Каталог

'Паттерн "Адаптер" (Adapter) в Java — совместимость с легаси и внешними SDK' — Пример

Фрагмент из «'Паттерн "Адаптер" (Adapter) в Java — совместимость с легаси и внешними SDK'»: Пример.

java projectencyclopedia7-06-proektirovanie-i-arhitektura-design-patterns-137 embed URL статья в энциклопедии
Java main.java
interface NotificationService {
    void send(String userId, String text);
}

class LegacySmsGateway {
    void sendSms(String phone, String body) {
        System.out.println("Legacy SMS -> " + phone + ": " + body);
    }
}

class SmsGatewayAdapter implements NotificationService {
    private final LegacySmsGateway gateway;
    private final UserPhoneResolver resolver;

    SmsGatewayAdapter(LegacySmsGateway gateway, UserPhoneResolver resolver) {
        this.gateway = gateway;
        this.resolver = resolver;
    }

    @Override
    public void send(String userId, String text) {
        String phone = resolver.resolve(userId);
        gateway.sendSms(phone, text);
    }
}

interface UserPhoneResolver {
    String resolve(String userId);
}
interface NotificationService {
    void send(String userId, String text);
}

class LegacySmsGateway {
    void sendSms(String phone, String body) {
        System.out.println("Legacy SMS -> " + phone + ": " + body);
    }
}

class SmsGatewayAdapter implements NotificationService {
    private final LegacySmsGateway gateway;
    private final UserPhoneResolver resolver;

    SmsGatewayAdapter(LegacySmsGateway gateway, UserPhoneResolver resolver) {
        this.gateway = gateway;
        this.resolver = resolver;
    }

    @Override
    public void send(String userId, String text) {
        String phone = resolver.resolve(userId);
        gateway.sendSms(phone, text);
    }
}

interface UserPhoneResolver {
    String resolve(String userId);
}