@Sir Rufo, Furtbichler: Ändert allerdings auch nichts daran, dass man die Parameterdeklaration bei jeder Methode wieder hinschreiben muss.
Wenn dann würde sich vielleicht eher dieses Pattern anbieten, wo man statt die Parameter einzeln zu übergeben, ein einziges Objekt übergibt, das alle Parameter beinhaltet... mit Namen hab ichs nicht so
. So spielt die dann Reihenfolge keine Rolle und man kann auch neue Parameter hinzufügen, ohne alle Methoden anpassen zu müssen.
Also statt:
Delphi-Quellcode:
TMyDummyMethod = class
protected
procedure Execute( input1: Integer; input2: TSomeClass; out output: Double );
end;
procedure TPacketHandler.Execute( const ACommandStr : string; input1: Integer; input2: TSomeClass; out output: Double );
begin
fMethodDict[ACommandStr].Execute( input1, input2, output );
end;
Delphi-Quellcode:
TMyMethodParameters = class
input1: Integer;
input2: TSomeClass;
output: Double;
end;
TMyDummyMethod = class
protected
procedure Execute(parameters: TMyMethodParameters);
end;
procedure TPacketHandler.Execute( const ACommandStr : string; input1: Integer; input2: TSomeClass; out output: Double );
var
Parameters: TMyMethodParameters;
begin
Parameters:= TMyMethodParameters.Create(input2, input2, output);
fMethodDict[ACommandStr].Execute(Arguments);
Parameters.Free;
end;
(jaja public Felder sind pöhse usw., ist nur qualitativ).
Aber KISS.