哪些编程语言通过委派支持隐式接口实现?

时间:2015-04-27 10:22:26

标签: interface delegates decorator kotlin

Kotlin可以做到这一点非常巧妙:

 class Derived(b: Base) : Base by b

使您的班级Derived实施Base,并且Base中未明确实施的Derived的所有方法都会自动委托给成员b。我没有在Kotlin中编程,丢失'this'指针可能是非常有限的,但它看起来像一个简单的事情,可能意味着每个语言应该具有的可维护性。

2 个答案:

答案 0 :(得分:1)

代表的一些语言:

  • Xtend

  • Swift

  • Groovy

  • 所有允许覆盖某种Missing Method的语言都可以轻松实现委派(使用通常称为missing method proxy的):即:Ruby,Python,JavaScript es6,Smalltalk

使用Ruby(取自here)缺少方法代理的示例:

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

答案 1 :(得分:0)

Delphi has implements keyword

  IMyIntf = interface
     procedure DoWork1();
     procedure DoWork2();
     ...
  end;

  TMyClass = class(TInterfacedObject, IMyIntf)
  private
    FIntf: IMyIntf;
  public
    property Prop: IMyIntf read FIntf implements IMyIntf;
  end;