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

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

DotNetRu
February 07, 2019

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

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

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 Реализация