SOLID - обсуждение принципа ISP (interface segregation principle, разделения интерфейса)

Определение мне понятно. Но как его правильно соблюдать?

Дробить интерфейс на множество мелких и делать из них иерархию на все случаи кода, чтобы не было лишних методов в контракте интерфейса?

Объясните, пожалуйста, принцип "I" из SOLID.


Ответы (1 шт):

Автор решения: Web Desg

Данный принцип гласит, что «Много специализированных интерфейсов лучше, чем один универсальный»

На примере:

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

То есть для класса ProductBook который расширяет Product интерфейс будет BookInterface в котором будет метод promo(), в то время как в интерфейсе CDInterface будет метод sale().

Логика этого принципа очень проста - не использовать методы которые Вы не будете реализовывать.

Надеюсь доступно)

→ Ссылка