ВВЕДЕНИЕ В ПРИНЦИПЫ SOLID НА ПРИМЕРЕ С#. ЧАСТЬ 5 - DIP
Принцип инверсии зависимостей
Данный принцип говорит о том, что объекты верхнего уровня не должны зависеть от объектов нижнего уровня. Оба должны зависеть от абстракций.
Чтобы понять данный принцип разберем его на контрпримере. Допустим у нас есть класс, который отвечает за отправку посылок.
Вышеописанный код имеет серьезный недостаток - он напрямую связан с классом MailPackage, если нам понадобиться добавить отправку на пункт выдачи необходимо будет вновь создать переменную и метод
Данный подход плох тем, что при добавлении новых способов доставки класс SendPackege будет постоянно меняться и разрастаться. К тому же придется инициализировать ненужные способы доставки, что очень неудобно. Чтобы исправить сложившуюся ситуацию необходимо разработать интерфейс, который будет содержать логику отправки посылок. Исправленный код выглядит следующим образом:
Заключение
Таким образом, инверсия зависимостей позволяет сделать код гибким и читаемым, а также облегчает разработку.
Список использованных источников
- Принципы SOLID. Принцип единственной обязанности. URL: https://metanit.com/sharp/patterns/5.1.php
- S.O.L.I.D. Principles of Object-Oriented Programming in C#. URL: https://www.educative.io/blog/solid-principles-oop-c-sharp
- Принципы SOLID в C#. URL: https://professorweb.ru/my/it/blog/net/solid.php
- Опасность нарушения принципов SOLID в C#. URL: https://learn.microsoft.com/ru-ru/archive/msdn-magazine/2014/may/csharp-best-practices-dangers-of-violating-solid-principles-in-csharp