Also ich interpertiere das einfach mal...
Sagen wir mal du hast zwei Schnittstellen über die du gehen willst, einmal USB und einmal
COM.
Da erstellst du jeweils eine Klasse für, die das Interface implementiert und in dem Interface
sind halt alle allgemeingehaltenden Methoden drin.
Bsp:
Das Interface:
Delphi-Quellcode:
type
ISchnittstelle = interface ( IInterface )
procedure Execute();
end;
type
TSchnittstelle = class ( TInterfacedObject, IInterface )
public
procedure Execute(); virtual; abstract;
end;
Die USB-Schnittstelle:
Delphi-Quellcode:
type
TUSBSchnittstelle = class ( TSchnittstelle )
private
protected
public
procedure Execute(); override;
end;
procedure TUSBSchnittStelle.Execute();
begin
// Do Something with USB
end;
Die
COM-Schnittstelle:
Delphi-Quellcode:
type
TCOMSchnittstelle =
class ( TSchnittstelle )
private
protected
public
procedure Execute();
override;
end;
procedure TCOMSchnittstelle.Execute();
begin
// Do Something with COM
end;
Und dann noch ne Factory die dir eins von beiden erstellt ( die Unterscheidung mache ich hier mit nem simplen String, geht natürlich auch anders):
Delphi-Quellcode:
type
TSchnittstellenFactory =
class ( TObject )
private
{ Private-Deklarationen }
protected
{ Protected-Deklarationen }
public
class function CreateSchnittstelle( sTyp:
String ): ISchnittstelle;
end;
class function CreateSchnittstelle( sTyp:
String ): ISchnittstelle;
var
coSchnittstelle: TSchnittstelle;
begin
coDependency :=
nil;
if sTyp = "USB"
then
begin
coDependency := TUSBSchnittstelle.Create();
end
else if sTyp = "
COM"
then
begin
coDependency := TCOMSchnittstelle.Create();
end;
result := coDependency;
end;
So würde ich das z.b. in etwa realisieren, wenn z.b. der Benutzer die Auswahl hätte zwischen den Schnittstellen oder so.
Natürlich nur schnell hingeklatscht...aber sollte verdeutlichen was ich meine ^^
MfG Alaitoc
PS: Übernehme keine Garantie für irgendwelche Fehler, hab nu Feierabend *gg*