В данном случае речь идет об абстракции интерфейса, а не о дополнительных уровнях ссылочной косвенности.
Интерфейсная абстракция служит нескольким целям:
- Чтобы фрагмент кода соответствовал интерфейсу, необходимому одному универсальному клиенту или одному клиенту, чья форма находится вне вашего контроля.
- Чтобы фрагмент кода соответствовал интерфейсу, совместно используемому несколькими клиентами.
- Чтобы заставить фрагмент кода соответствовать ментальной модели сопровождающего, абстрагируя детали реализации.
- Чтобы фрагмент кода соответствовал интерфейсу, необходимому для запланированного (а не просто возможного) будущего варианта использования.
Если другой модуль в вашей системе уже принимает другие входные данные с помощью интерфейса настройки контекста-подписки-фильтрации, он может быть полезен, поскольку позволяет вашему коду подключаться там: (1) или (2) выше.
Если у вас есть конкретные планы иметь несколько провайдеров или потребителей этого интерфейса, то может быть полезно просто привести его в соответствие с интерфейсом сейчас, поскольку вы уже выполнили работу по переносу кода в память: (4) выше.
Если другие модули уже структурированы таким образом, или если фильтрация является распространенной операцией, используемой другими модулями, разработчики кода могут использовать это для быстрого изучения вашего кода: (3) выше.
Если ни один из них не применим, то, поскольку filtersUpdateSuccess
не закрывается ни по чему, что не tplPanels
, в абстракции интерфейса нет значения.