Варианты использования серверов пересылки и прокси-серверов Scala - PullRequest
6 голосов
/ 21 апреля 2011

Библиотека коллекций Scala содержит серверы пересылки IterableForwarder, TraversableForwarder, SeqForwarder и прокси, такие как IterableProxy, MapProxy, SeqProxy, SetProxy, TraversableProxy и т. Д. Пересылки и прокси-серверы оба метода сбора делегатовв базовый объект коллекции.Основное различие между этими двумя заключается в том, что серверы пересылки не переадресовывают вызовы, которые могли бы создать новые объекты коллекции того же типа.

В каких случаях я бы предпочел один из этих типов другому?Почему и когда полезны экспедиторы?И если они полезны, почему нет MapForwarder и SetForwarder?

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

1 Ответ

4 голосов
/ 21 апреля 2011

Я думаю, этот ответ дает некоторый контекст о Proxy в целом (и ваше предположение об оболочке и сутенерстве будет правильным).

Насколько я могу судить, подтипы Proxy больше ориентированы на конечных пользователей. При использовании Proxy прокси-объект и self объект будут равными для всех намерений и целей. Я думаю, что это на самом деле главное отличие. Не используйте Proxy, если это предположение не выполняется.

Черты Forwarder , по-видимому, используются только для поддержки ListBuffer и могут быть более подходящими, если нужно развернуть собственный класс сбора, построенный поверх инфраструктуры CanBuildFrom. Так что я бы сказал, что она больше ориентирована на авторов библиотек, где библиотека основана на дизайне коллекции 2.8.

...