Ответ
Паттерн Фасад предоставляет простой интерфейс к сложной подсистеме. В .NET его примеры часто встречаются в стандартных библиотеках и популярных пакетах.
Классические примеры в .NET:
-
HttpClient— это фасад для сложных низкоуровневых операций HTTP (HttpWebRequest, управление соединениями, пулинг).// Простой интерфейс скрывает сложность using var client = new HttpClient(); var response = await client.GetStringAsync("https://api.example.com/data"); -
Task.WhenAll/Task.WhenAny— фасады для управления группой асинхронных операций, скрывающие ручное создание и ожидание задач.var tasks = new List<Task<string>> { DownloadPageAsync(url1), DownloadPageAsync(url2) }; string[] pages = await Task.WhenAll(tasks); // Единая точка управления -
Environmentкласс — предоставляет простой доступ к системным параметрам, скрывая вызовы WinAPI или переменные окружения.string user = Environment.UserName; string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); -
ORM-фреймворки (например, Entity Framework Core
DbContext): КлассDbContextвыступает фасадом для работы с базой данных, инкапсулируя подключение, отслеживание объектов, построение SQL-запросов и транзакции.using var db = new AppDbContext(); var customers = await db.Customers .Where(c => c.IsActive) .ToListAsync(); // Сложность работы с ADO.NET скрыта
Зачем это нужно? Фасад уменьшает связанность клиентского кода с внутренними классами подсистемы, упрощает её использование и делает код более поддерживаемым.