ВВЕДЕНИЕ В ПРИНЦИПЫ SOLID НА ПРИМЕРЕ С#. ЧАСТЬ 2 - OSP

В прошлой части мы разобрали первый принцип SOLID, на очереди принцип открытости/закрытости. Ознакомиться с прошлой частью можно по ссылке:

OSP. Принцип открытости/закрытости

Данный принцип звучит следующим образом - программный объект должен быть открыт для расширений, но закрыт для модификаций. Это означает, что изначальный объект можно изменять только при крайней необходимости (нахождения бага, ошибки), а для добавления нового функционала необходимо использовать абстрактный класс и/или интерфейсы. Рассмотри пример нарушения данного принципа, немного изменив класс SendMessage из предыдущего примера, добавим возможность отправлять сообщения разными способами.

ВВЕДЕНИЕ В ПРИНЦИПЫ SOLID НА ПРИМЕРЕ С#. ЧАСТЬ 2 - OSP

Нарушение заключается в том, что если пользователь решит добавить отправку сообщения, например в телеграмм, ему придется изменять класс SendMessage. Для того чтобы исправить принцип OSP необходимо определить интерфейс ISendMessage, который будет содержать метод Send. А реализацию вынесем в разные классы. Теперь код выглядит следующим образом:

ВВЕДЕНИЕ В ПРИНЦИПЫ SOLID НА ПРИМЕРЕ С#. ЧАСТЬ 2 - OSP

Таким образом, при необходимости реализации дополнительного метода отправки сообщения, нет необходимости изменять существующий функционал, заместо этого разрабатывается новый класс и реализация отправки сообщения

Заключение

Принцип открытости/закрытости позволяет избежать большой связности кода. Такой подход позволяет сократить связность кода и возможность возникновения ошибок в будущем.

Список использованных источников

  • Принципы 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
22
Начать дискуссию