情况
我想使RPC接口更容易使用.这是一个自定义界面,因此没有现成的包装器.
可能的解决方案
TDoSomethingFunction = class public property Arg1: Integer; property Arg2: string; property Arg3: Boolean; procedure Run; end;
var DoSomething: TDoSomethingFunction; begin DoSomething := TDoSomethingFunction.Create; try DoSomething.Arg1 := 0; ... DoSomething.Run; finally free; end;
procedure TRPCInterface.DoSomething(AArg1: Integer; AArg2: string; AArg3: Boolean);
来电者可以简单地称之为:
TRPCInterface.DoSomething(0,...);
亲和反对
>需要更多代码.
>必须创建一个占用内存的对象.
临
>阅读代码更容易,您不必查看声明以查看参数是什么.
>仅仅通过查看代码,您无法分辨使用哪些参数.
临
>写的代码要少得多.
>包装器更薄(不需要创建任何对象).
我应该使用哪种方法?
解决方法
有一个中间解决方案是调用传递object参数的包装器方法.
TDoSomethingArgs = class public property Arg1: Integer; property Arg2: string; property Arg3: Boolean; end; procedure TRPCInterface.DoSomething(Args: TDoSomethingArgs);
这种方法的一个优点是你仍然使用方法,但它仍然更具可读性.在参数中使用类(也可以使用记录)的一个优点是,您可以稍后更改参数(添加更多,更改行为),如果您选择它,它不会破坏向后兼容性 – 总之,您可以更改方法签名没有破坏代码.