Betrachten wir das doch mal ganz abstrakt aus der Sicht der Anwendung:
Es gibt da so einige Daten-Pakete, die empfangen und gesendet werden können. Mehr interessiert die Anwendung an diesem Punkt nicht. Wann und warum ist egal. Wenn, dann muss die Anwendung reagieren und wenn die Anwendung etwas senden will, dann muss das auch einfach passieren. Wie das passiert, ist der Anwendung an diesem Punkt auch egal.
Damit kann man jetzt eine abstrakte Klasse definieren, die diese Anforderungen (Senden von Daten und Events beim Empfang von Daten) erfüllt.
Delphi-Quellcode:
type
TCNC_Data1 = record
...
end;
TCNC_Data2 = record
...
end;
TCNC_Command1 = record
...
end;
TCNC_Command2 = record
...
end;
TCNC_Data1_Event = procedure ( Sender : TObject; Value : TCNC_Data1 ) of object;
TCNC_Data2_Event = procedure ( Sender : TObject; Value : TCNC_Data2 ) of object;
TAbstractCNC_Talker = class abstract
private
FOnReceiveData1 : TCNC_Data1_Event;
FOnReceiveData2 : TCMC_Data2_Event;
public
procedure Send( Value : TCNC_Command1 ); overload; virtual; abstract;
procedure Send( Value : TCNC_Command2 ); overload; virtual; abstract;
property OnReceiveData1 : TCNC_Data1_Event read FOnReceiveData1 write FOnReceiveData1;
property OnReceiveData2 : TCNC_Data2_Event read FOnReceiveData2 write FOnReceiveData2;
end;
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)