Это классический пример того, как люди решают нарушить принцип замещения Лискова. Я настоятельно не одобряю это, но поощрил бы возможно другое решение:
- Возможно, класс, который вы пишете, не обеспечивает функциональность, предписанную интерфейсом, если он не использует всех членов интерфейса.
- Альтернативно, этот интерфейс может выполнять несколько задач и может быть разделен в соответствии с принципом разделения интерфейса.
Если первое относится к вам, просто не реализуйте интерфейс для этого класса. Думайте об этом как о электрической розетке, где отверстие для заземления не нужно, чтобы оно на самом деле не прикреплялось к земле. Вы ничего не подключаете с нуля и ничего страшного! Но как только вы воспользуетесь чем-то, что нуждается в заземлении, вас может ожидать впечатляющий провал. Лучше не пробивать ложную дыру. Поэтому, если ваш класс на самом деле не делает то, что задумал интерфейс, не реализуйте интерфейс.
Вот несколько быстрых кусочков из википедии:
Принцип замещения Лискова можно просто сформулировать так: «Не усиливайте предварительные условия и не ослабляйте постусловия».
Более формально, принцип подстановки Лискова (LSP) - это конкретное определение отношения подтипов, называемое (сильным) поведенческим подтипом, которое было впервые введено Барбарой Лисков в основном выступлении на конференции в 1987 году под названием «Абстракция и иерархия данных». Это семантическое, а не просто синтаксическое отношение, потому что оно намеревается гарантировать семантическую совместимость типов в иерархии , [...]
Для семантической совместимости и взаимозаменяемости между различными реализациями одних и тех же контрактов - вам нужно, чтобы все они придерживались одного и того же поведения.
Принцип сегрегации интерфейса говорит о том, что интерфейсы должны быть разделены на связные наборы, так что вам не требуется интерфейс, который делает много разных вещей, когда вам нужен только один объект. Подумайте еще раз об интерфейсе электрической розетки, он также может иметь термостат, но это усложнит установку электрической розетки и может затруднить его использование в целях без нагрева. Подобно электрической розетке с термостатом, большие интерфейсы сложны в реализации и использовании.
Принцип сегрегации интерфейса (ISP) гласит, что ни один клиент не должен зависеть от методов, которые он не использует. [1] Интернет-провайдер разбивает очень большие интерфейсы на более мелкие и более специфичные, чтобы клиенты могли знать только о методах, которые им интересны.