Я перечитывал определения интерфейса для okio и пытаюсь кое-что понять с тем, как Sink
, Source
и Buffer
связаны между собой.Sink
определяет запись как fun write(buffer: Buffer)
, а Source
определяет чтение как fun read(buffer: Buffer)
(я опускаю некоторые определения функции для краткости)
Я пытаюсь понять, почему Sink неопределить запись как fun write(sink: Sink)
Аналогично для источника.Я вижу, что Buffer реализует оба, но зачем использовать Buffer
в обоих местах?Было ли это для упрощения других реализаций Sink
/ Source
, позволяя им иметь доступ к удобным методам, которые предоставляет Buffer?