什么编程语言支持由代理实现隐式接口?
Kotlin可以做到这一点非常巧妙的把戏:
class Derived(b: Base) : Base by b
这使您的类Derived
实现Base
,并且在Derived
中未明确实现Base
所有方法都会自动委派给成员b
。 我不在Kotlin编程,失去'this'
指针可能是相当有限的,但它看起来像一个简单的东西,可能意味着每一种语言都应该具有的可维护性。
有代表的一些语言:
-
的Xtend
-
迅速
-
Groovy的
-
允许覆盖某种丢失方法的所有语言都可以轻松地实现委托(使用通常称为
missing method proxy
):即:Ruby,Python,JavaScript es6,Smalltalk
缺少使用Ruby的方法代理的示例(从此处获取 ):
class Proxy def initialize(subject) @subject = subject end private def method_missing(method, *args, &block) @subject.send(method, *args, &block) end end proxied_array = Proxy.new([1,2,3]) puts proxied_array.size # 3
Delphi 已经实现了关键字
IMyIntf = interface procedure DoWork1(); procedure DoWork2(); ... end; TMyClass = class(TInterfacedObject, IMyIntf) private FIntf: IMyIntf; public property Prop: IMyIntf read FIntf implements IMyIntf; end;