Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Владислав Шакиров «Паттерн «Спецификация»

Avatar for DotNetRu DotNetRu
February 07, 2019

Владислав Шакиров «Паттерн «Спецификация»

Мы часто пишем Linq-запросы. Иногда они достаточно просты, а иногда представляют собой многострочное трудночитаемое чудовище. Паттерн спецификация помогает инкапсулировать логику фильтрации объектов в соответствии с какими-то критериями поиска. Основной идеей является вынесение логики выбора объекта из класса объекта в отдельный класс-спецификацию. А также паттерн «Спецификация» позволяет комбинировать описанные ранее бизнес-правила, что позволяет переиспользовать код и облегчить его понимание. В результате мы получаем довольно мощный инструмент, который пригодится любому разработчику!

Avatar for DotNetRu

DotNetRu

February 07, 2019
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. Обо мне Владислав Шакиров Разработчик 2 Разработчик в Райффайзенбанк. Разрабатываю

    на .Net уже около 5 лет. Занимаюсь разработкой Backend и Desktop-приложений, а так же стараюсь делать архитектуру приложений проще и понятнее 
  2. Определение паттерна 1 «Спецификация» в программировании — это шаблон проектирования,

    посредством которого представление правил бизнес логики может быть преобразовано в виде цепочки объектов, связанных операциями булевой логики.
  3. 9  Фильтрация объектов  Уменьшение дублирования кода  Составление

    универсальных запросов к репозиторию Применение
  4. 12  Чистый репозиторий  В случае изменения бизнес требования,

    мы можем изменить запрос в одном месте, не меняя кучу кода  Возможность переиспользовать спецификации 2 Применения: особенности
  5. 17  Плохая: Построение запросов поверх репозитория:  Отличная Спецификация

     Нормальная: Метод в контракте репозитория 3 Реализация