Предыдущая часть: Мы дошли до буквы I, которая обозначает Interface Segregation, или разграничение интерфейсов. Сразу скажу, что данный принцип самый скучный и как бы это сказать, самоочевидный. Такое ощущение, что его придумали и вставили в SOLID просто потому что не хватало одной красивой буквы. Он звучит так: Клиенты не должны зависеть от интерфейсов, которые они не используют. Что за клиенты? Таким словом автор принципа – Роберт Мартин – назвал все классы, которые реализуют тот или иной интерфейс. А что значит зависеть? Предположим, для описания поведения животных сделан интерфейс Animal, в котором должны быть реализованы методы run(), fly(), swim(), scream() и т.д. Далее мы начинаем описывать классы некоторых животных – они клиенты этого интерфейса. Например, кошка Cat. Она умеет бегать: run() и кричать: scream(). Например, утка Duck. Она умеет летать: fly(), плавать: swim() и кричать: scream(). Например, рыба Fish. Она умеет плавать: swim(). Если класс реализует какой-то интерфей