П
Профессор Си
@csharpovich3.0K подп.
1.0Kпросмотров
34.5%от подписчиков
17 января 2026 г.
Score: 1.1K
👨‍💻 Когда if начинает распухать Паттерн стратегия подходит, когда один и тот же сценарий можно выполнить несколькими способами, и выбор зависит от условий. Вместо большого switch внутри сервиса разные варианты выносятся в отдельные классы с общим интерфейсом, а контекст просто делегирует работу выбранной реализации. Типовая схема такая. Есть интерфейс Strategy, есть несколько конкретных стратегий, и есть контекст, который держит ссылку на стратегию и вызывает ее метод, не зная деталей реализации. Это снижает связность и позволяет добавлять новые варианты без переписывания старого кода. Мини пример на C#: public interface IDiscountStrategy { decimal Apply(decimal total); } public sealed class RegularDiscount : IDiscountStrategy { public decimal Apply(decimal total) => total; } public sealed class VipDiscount : IDiscountStrategy { public decimal Apply(decimal total) => total * 0.9m; } public sealed class Checkout { private readonly IDiscountStrategy _discount; public Checkout(IDiscountStrategy discount) => _discount = discount; public decimal TotalWithDiscount(decimal total) => _discount.Apply(total); } Если стратегия выбирается по условиям, условие должно выбирать объект, а не ветку кода: var checkout = serviceProvider.GetRequiredService<Checkout>(); var total = checkout.TotalWithDiscount(100m); Выбор стратегии лучше делать на границе приложения, например в фабрике или при конфигурации через DI, потому что прямое создание зависимостей внутри сервиса жестко привязывает код к конкретной реализации. Профессор Си
1.0K
просмотров
1568
символов
Нет
эмодзи
Нет
медиа

Другие посты @csharpovich

Все посты канала →
👨‍💻 Когда if начинает распухать Паттерн стратегия подходит — @csharpovich | PostSniper