Also ich habe hier verschiedene Kameras von verschiedenen Herstellern die ich über deren
API Funktionen anspreche.
Einige Funktionen haben alle Kameras gemeinsam, wie OpenKamera, BelichtungszeitEinstellen, oder Bildmachen.
Diese Funktionen will ich in ein Interface packen so dass ich die Kameras ohne weiteres untereinander austauschen kann.
Beispiel:
Delphi-Quellcode:
ICamera = interface
procedure Initialize;
function getBild:SpectrumArray;
procedure setExposureTime(msTime : integer);
function getExposureTime: integer;
end;
TKamera1 = class(TInterfacedObject, ICamera)
procedure Initialize;
function getBild:SpectrumArray;
procedure setExposureTime(msTime : integer);
function getExposureTime: integer;
end;
Nun haben einige der Kameras noch funktionen die andere nicht bieten, und somit würde ich bei diesen Kameras noch andere Funktionen hinzufügen wollen.
Beispiel:
Delphi-Quellcode:
TKamera2 = class(TInterfacedObject, ICamera)
procedure Initialize;
function getBild:SpectrumArray;
procedure setExposureTime(msTime : integer);
function getExposureTime: integer;
procedure setTriggerTimeOut(mode : integer);
function getTriggerTimeOut:integer;
end;
Ansprechen möchte ich die Kameras allerdings über das Interface, so dass sie wie gesagt untereinander austauschbar sind. Und dass ich ohne weiteres neue Kameras hinzufügen kann.
Delphi-Quellcode:
var
Cam : ICamera;
begin
Cam := TKamera1.create;
Cam.setExposureTime(1000);
end;
Gibt es da vielleicht ein geschicktes Entwurfsmuster was mir dabei helfen kann?
// Edit: Fehler mit create behoben