Когда использовать интерфейсы в Dart?

Я читал документацию по Dart и был немного сбит с толку, возможно, потому, что я пришел из Ruby, относительно того, как использовать интерфейсы. Конечно, интерфейсы не уникальны для Dart, и существует множество объяснений того, когда следует использовать интерфейс. Этот , например, говорит, что интерфейсы полезны только тогда, когда вы работаете в команде. Что это вообще должно означать в мире открытого исходного кода, где все читают и повторно используют чужой код?

Одно интересное объяснение, которое я видел, похоже, подразумевало, что интерфейсы используются:

  1. в языках, в которых отсутствует множественное наследование, и
  2. если уж на то пошло, они каким-то образом служат обходным путем при отсутствии множественного наследования.

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

П.С. Кстати, есть ли способ использовать множественное наследование в Dart?

8
задан nbro 26 August 2017 в 15:03
поделиться