Как следовать принципу открытия-закрытия при изменении интерфейса

#design-patterns

#шаблоны проектирования

Вопрос:

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

Может кто-нибудь дать мне несколько предложений? Спасибо.

Комментарии:

1. Может быть, декоратор может вам помочь? baeldung.com/java-decorator-pattern дайте мне знать, что я могу дать исчерпывающий ответ

Ответ №1:

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

Если вместо этого вам нужно изменить существующий метод, добавив дополнительные параметры, я полагаю, у вас не так много вариантов. Но, честно говоря, на самом деле это не такая уж большая проблема, если только вы не пишете библиотеку…

В C # вы можете написать методы расширения, которые позволяют вам определять методы, работающие в интерфейсе (или классе), без изменения существующего кода. Это может быть вариантом в случае, если реализация нового метода в конечном итоге вызывает существующий.