Черта Proxy предоставляет полезную основу для создания делегатов, но обратите внимание, что она предоставляет только реализации методов в Any
(equals
, hashCode
и toString
).Вы должны будете самостоятельно реализовать любые дополнительные методы пересылки.Прокси часто используется с шаблоном pimp-my-library :
class RichFoo(val self: Foo) extends Proxy {
def newMethod = "do something cool"
}
object RichFoo {
def apply(foo: Foo) = new RichFoo(foo)
implicit def foo2richFoo(foo: Foo): RichFoo = RichFoo(foo)
implicit def richFoo2foo(richFoo: RichFoo): Foo = richFoo.self
}
Стандартная библиотека также содержит набор характеристик, которые полезны для создания прокси коллекций (SeqProxy
, SetProxy
, MapProxy
и т. Д.).
Наконец, в scala-инкубаторе есть плагин компилятора (плагин AutoProxy ), который будет автоматически реализовывать методы пересылки.Смотри также этот вопрос .