Что такое паттерн Anti Corruption Layer

«Что такое паттерн Anti Corruption Layer» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Паттерн Anti Corruption Layer (ACL) — это прослойка между двумя системами, которая преобразует данные из одной системы в формат, понятный другой, предотвращая их прямое влияние друг на друга. Используется при интеграции устаревших (legacy) систем с новыми, чтобы избежать "загрязнения" новой системы старыми концепциями или несовместимыми моделями.

Пример на Go:

// Legacy API возвращает данные в старом формате.
type LegacyUser struct {
    ID       int
    FullName string
}

// ACL преобразует LegacyUser в User новой системы.
func AdaptLegacyUser(legacyUser LegacyUser) User {
    return User{
        ID:   strconv.Itoa(legacyUser.ID),
        Name: legacyUser.FullName,
    }
}

// Новая система работает с User.
type User struct {
    ID   string
    Name string
}

Преимущества:

  • Изоляция новой системы от legacy-кода.
  • Возможность постепенного рефакторинга.
  • Упрощение тестирования.