Ответ
Паттерн 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-кода.
- Возможность постепенного рефакторинга.
- Упрощение тестирования.