Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Methoden-Deklaration vorgeben?
13. Aug 2013, 19:55
Das kann man auch schön so umsetzen
Delphi-Quellcode:
IMyMethod = interface
procedure Execute( input1: Integer; input2: TSomeClass; out output: Double );
end;
// Eine Dummy-Klasse zum Veranschaulichen
TMyDummyMethod = class( TInterfacedObject, IMyMethod )
protected
procedure Execute( input1: Integer; input2: TSomeClass; out output: Double );
end;
procedure TMyMethod.Execute( input1: Integer; input2: TSomeClass; out output: Double );
begin
output := 0;
end;
Jetzt für jeden konkreten Befehl so eine Klasse erstellen und die jeweilige Instanz in einem TDictionary<string,IMyMethod>
verwalten
Der Aufruf gestaltet sich ja dann sehr smart
Delphi-Quellcode:
type
TPacketHandler = class
private
fMethodDict : TDictionary<string,IMyMethod>;
public
procedure Execute( const ACommandStr : string; input1: Integer; input2: TSomeClass; out output: Double );
procedure AddMethod( const ACommandStr : string; AMethod : IMyMethod );
end;
procedure TPacketHandler.Execute( const ACommandStr : string; input1: Integer; input2: TSomeClass; out output: Double );
begin
fMethodDict[ACommandStr].Execute( input1, input2, output );
end;
procedure TPacketHandler.AddMethod( const ACommandStr : string; AMethod : IMyMethod );
begin
fMethodDict.AddOrSet( ACommandStr, AMethod );
end;
Und damit bist du natürlich sehr viel schneller, weil du viel weniger Aufwand betreiben mußt, nicht wahr?
Nicht unbedingt schneller, aber flexibler
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
|
|
Zitat
|