SOLID - обсуждение принципа ISP (interface segregation principle, разделения интерфейса)
Определение мне понятно. Но как его правильно соблюдать?
Дробить интерфейс на множество мелких и делать из них иерархию на все случаи кода, чтобы не было лишних методов в контракте интерфейса?
Объясните, пожалуйста, принцип "I" из SOLID.
Ответы (1 шт):
Данный принцип гласит, что «Много специализированных интерфейсов лучше, чем один универсальный»
На примере:
У Вас есть магазин книги и диски. Вы хотите запустить скидку для дисков, а для книг промоакцию, разуметься Вы будете использовать наследование и интерфейс, вот и у каждого Вашего класса будут разные интерфейсы по скидкам.
То есть для класса ProductBook который расширяет Product интерфейс будет BookInterface в котором будет метод promo(), в то время как в интерфейсе CDInterface будет метод sale().
Логика этого принципа очень проста - не использовать методы которые Вы не будете реализовывать.
Надеюсь доступно)