Jen*_*off 5 delphi oop rpc wrapper
我想使RPC接口更容易使用.这是一个自定义界面,因此没有现成的包装器.
我必须围绕通常有许多参数的函数编写几个包装器.
解决方案1 - 为每个函数使用一个类:
TDoSomethingFunction = class
public
property Arg1: Integer;
property Arg2: string;
property Arg3: Boolean;
procedure Run;
end;
Run Code Online (Sandbox Code Playgroud)
调用者必须创建一个对象来调用该函数:
var
DoSomething: TDoSomethingFunction;
begin
DoSomething := TDoSomethingFunction.Create;
try
DoSomething.Arg1 := 0;
...
DoSomething.Run;
finally
free;
end;
Run Code Online (Sandbox Code Playgroud)
方法2 - 为每个函数使用包装器方法:
procedure TRPCInterface.DoSomething(AArg1: Integer; AArg2: string; AArg3: Boolean);
Run Code Online (Sandbox Code Playgroud)
来电者可以简单地称之为:
TRPCInterface.DoSomething(0, ...);
Run Code Online (Sandbox Code Playgroud)
方法1 - 每个函数的类
反对
临
方法2 - 包装方法
反对
临
我应该使用哪种方法?
有一个中间解决方案,即调用传递对象参数的包装器方法。
TDoSomethingArgs = class
public
property Arg1: Integer;
property Arg2: string;
property Arg3: Boolean;
end;
procedure TRPCInterface.DoSomething(Args: TDoSomethingArgs);
Run Code Online (Sandbox Code Playgroud)
此方法的优点之一是您仍然使用方法,但仍然更具可读性。在参数中使用类(您也可以使用记录)的一个优点是您可以稍后更改参数(添加更多,更改行为),如果您选择得好,它不会破坏向后兼容性 - 总之您可以更改方法签名无需破坏代码。