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

Принцип разделения интерфейсов

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

Основные признаки нарушения принципа разделения интерфейсов:

  • Слишком большие интерфейсы;
  • Компоненты слабо согласованы (перекликается с принципом единой ответственности);
  • Методы остаются нереализованными (перекликается с принципом подстановки Барбары Лисков).

Рассмотрим данный принцип на примере. В этот раз мы не будем опираться на код из прошлых частей и представим что у нас в компании имеются работники с фиксированной и сдельной заработной платой. Интерфейс и реализация выглядят следующим образом:

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

В данном коде нарушаются принцип разделения интерфейсов, так как функционал его слишком избыточен из-за чего мы попадаем в ситуацию, когда наследникам приходиться реализовывать ненужный им функционал.

Чтобы исправить нынешнюю ситуацию, необходимо разделить интерфейсы на IWorker, IFixWorker, IContractWorker.

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

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

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

Заключение

Таким образом, принцип разделения интерфейсов позволяет создавать код, который не будет заставлять реализующие классы использовать бесполезных для них функционал. Можно заметить, что принципы SOLID очень часто перекликаются между собой и нарушив один из них есть шанс не соблюсти еще несколько. Соблюдение принципа ISP, также позволяет не нарушать принцип единственной ответсвенности и подстановки Барбары Лисков.

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

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