实现接口在运行时有什么好处?

时间:2016-04-20 07:21:06

标签: oop delphi rtti

我正在尝试理解http://docs.ceph.com/docs/hammer/radosgw/s3/csharp/课程。

{$APPTYPE CONSOLE}

uses
  SysUtils, Rtti;

type
  ISpecificInterface = interface(IInvokable)
    ['{281D8B97-397E-430A-895A-9CA4E1F5FB5F}']
    procedure SpecificProcedure;
  end;

procedure AProcedure(Method: TRttiMethod; const Args: TArray<TValue>;
  out Result: TValue);
begin
  Writeln(Method.ToString);
end;

var
  ISpecificInterfaceInstance: ISpecificInterface;

begin
  ISpecificInterfaceInstance := TVirtualInterface.Create
    (TypeInfo(ISpecificInterface), AProcedure) as ISpecificInterface;

  ISpecificInterfaceInstance.SpecificProcedure;

end. // TVirtualInterface ref. counter is decremented

在运行时实现接口有什么好处?

空间的用途是什么?

2 个答案:

答案 0 :(得分:5)

说明为here

  

提供远程过程调用封送的功能......

答案 1 :(得分:4)

有很多种方法可以使用它,但它们都有共同点,因为你使用的是接口,调用方并不关心实现的样子 - 如果它是一个实现接口的实际类编译时或者如果你在运行时通过TVirtualInterface或其他方式动态实现它,只要它根据接口契约行为。

当这首次在XE2中引入时,我写了article about it及其可能的用法。正如在评论中提到的,这实际上使我们能够以非常简单的方式实现模拟框架,只需通过声明通用的模拟类型,在内部创建一个接口代理来处理模拟中指定的调用。