Должен ли я использовать класс или метод для обертывания динамического удаленного вызова процедуры?

Ситуация

Я бы хотел упростить использование интерфейса RPC. Это настраиваемый интерфейс, поэтому готовой оболочки нет.

Мне нужно написать несколько оболочек для функций, которые часто имеют много аргументов.

Возможные решения

Решение 1. Использование класса для каждой функции:

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;

Метод 2 - Использование метода оболочки для каждой функции:

procedure TRPCInterface.DoSomething(AArg1: Integer; AArg2: string; AArg3: Boolean);

Вызывающий может просто вызвать его:

TRPCInterface.DoSomething(0, ...);

За и против

Метод 1 - Класс для каждой функции

Contra

  • Требуется дополнительный код.
  • Должен быть создан объект, занимающий память.

Pro

  • Читать код проще, вам не нужно смотреть в объявление, чтобы увидеть аргументы.

Метод 2 - метод-оболочка

Contra

  • Вы не можете определить, какие аргументы используются, просто взглянув на код.

Pro

  • Намного меньше кода для написания.
  • Обертка тоньше (создавать объекты не требуется).

Какой метод мне следует использовать?

5
задан mjn 10 February 2012 в 13:51
поделиться