Разделение интерфейса - это «Я» по принципу SOLID, прежде чем копать слишком глубоко с первым, давайте объясним, что означает последнее.
SOLID можно считать набором лучших практик и рекомендаций, сделанных экспертами (то есть они были доказаны ранее), чтобы обеспечить надежную основу для разработки приложений. Эти методы направлены на то, чтобы упростить поддержку, расширение, адаптацию и масштабирование наших приложений.
Почему я должен заботиться о программировании SOLID?
Прежде всего, вы должны осознать, что не навсегда останетесь там, где вы есть. Если мы используем стандарты и хорошо известные архитектуры, мы можем быть уверены, что наш код будет легко поддерживать другие разработчики, которые идут за нами, и я уверен, что вы не захотите решать задачу исправления кода, который не помог не применял ни одной известной методологии, так как это было бы очень трудно понять.
Принцип разделения интерфейса.
Знайте, что мы знаем, что такое принципы SOLID, мы можем подробнее узнать о принципе разделения интерфейса, но что именно говорит сегрегация интерфейса?
«Клиентов не следует заставлять применять ненужные методы, которые
они не будут использовать »
Это означает, что иногда мы склонны создавать интерфейсы с большим количеством методов, которые могут быть хорошими в некоторой степени, однако это может легко использоваться неправильно, и мы можем получить классы, которые реализуют пустые или бесполезные методы, что, конечно, добавляет дополнительные код и нагрузка на наши приложения.
Представьте, что вы объявляете множество методов в одном интерфейсе, если вам нравятся наглядные пособия, класс, реализующий интерфейс, но для которого действительно требуется пара методов, будет выглядеть следующим образом:
С другой стороны, если вы правильно примените сегрегацию интерфейса и разделите свой интерфейс на меньшие подмножества, вы можете быть уверены, что реализуете только те, которые необходимы:
См! Это намного лучше! Применение этого принципа позволит вам иметь низкое сцепление, что способствует лучшей ремонтопригодности и высокой устойчивости к изменениям. Таким образом, вы можете реально использовать использование интерфейсов и реализацию методов, когда вам это действительно нужно.
Теперь давайте рассмотрим менее абстрактный пример, скажем, вы объявили интерфейс под названием Reportable
public interface Reportable {
void printPDF();
void printWord();
void printExcel();
void printPPT();
void printHTML();
}
И у вас есть клиент, который будет экспортировать только некоторые данные в формате Excel, вы можете реализовать интерфейс, но вам нужно будет только реализовать метод Excel? Ответ - нет, вам придется кодировать реализацию для всех методов, даже если вы не собираетесь их использовать, это может привести к большому количеству ненужного кода и, следовательно, к затруднению поддержки кода.
Помните, что будьте проще и не повторяйте себя, и вы обнаружите, что уже используете этот принцип, не зная.