ВВЕДЕНИЕ В ПРИНЦИПЫ SOLID НА ПРИМЕРЕ С#. ЧАСТЬ 2 - OSP
OSP. Принцип открытости/закрытости
Данный принцип звучит следующим образом - программный объект должен быть открыт для расширений, но закрыт для модификаций. Это означает, что изначальный объект можно изменять только при крайней необходимости (нахождения бага, ошибки), а для добавления нового функционала необходимо использовать абстрактный класс и/или интерфейсы. Рассмотри пример нарушения данного принципа, немного изменив класс SendMessage из предыдущего примера, добавим возможность отправлять сообщения разными способами.
Нарушение заключается в том, что если пользователь решит добавить отправку сообщения, например в телеграмм, ему придется изменять класс SendMessage. Для того чтобы исправить принцип OSP необходимо определить интерфейс ISendMessage, который будет содержать метод Send. А реализацию вынесем в разные классы. Теперь код выглядит следующим образом:
Таким образом, при необходимости реализации дополнительного метода отправки сообщения, нет необходимости изменять существующий функционал, заместо этого разрабатывается новый класс и реализация отправки сообщения
Заключение
Принцип открытости/закрытости позволяет избежать большой связности кода. Такой подход позволяет сократить связность кода и возможность возникновения ошибок в будущем.
Список использованных источников
- Принципы 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