Почему я должен использовать Reify вместо прокси в clojure? - PullRequest
37 голосов
/ 28 апреля 2011

Почему я должен использовать Reify вместо прокси в clojure?

Ответы [ 2 ]

50 голосов
/ 28 апреля 2011

Тела метода reify являются лексическими замыканиями и могут относиться к окружающей локальной области видимости.reify отличается от proxy тем, что:

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

результат - лучшая производительность, чем у прокси, как в построении, так и в вызове.reify предпочтительнее proxy во всех случаях, когда его ограничения не являются запретительными.

Источник: http://clojure.org/datatypes

12 голосов
/ 28 апреля 2011

Используйте reify там, где вы когда-то использовали бы proxy, если вам не нужно переопределять методы базового класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...