Почему я должен использовать Reify вместо прокси-сервера в clojure?
Почему я должен использовать Reify вместо прокси-сервера в clojure?
Ответ 1
Телами метода reify
являются лексические замыкания и могут ссылаться на окружающую локальную область. reify
отличается от proxy
тем, что:
- Поддерживаются только протоколы или интерфейсы, нет конкретного суперкласса.
- Телами метода являются истинные методы результирующего класса, а не внешние fns.
- Вызов методов в экземпляре напрямую, не используя поиск по карте.
- Нет поддержки динамической замены методов на карте методов.
Результат - лучшая производительность, чем прокси, как в построении, так и при вызове. reify
предпочтительнее proxy
во всех случаях, когда его ограничения не являются запретительными.
Источник: http://clojure.org/datatypes
Ответ 2
Используйте reify
, где вы когда-нибудь используете proxy
, если вам не нужно переопределять методы базового класса.