AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Implementation Interface Struktur

Ein Thema von slemke76 · begonnen am 3. Dez 2009 · letzter Beitrag vom 17. Jan 2011
 
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#1

Implementation Interface Struktur

  Alt 3. Dez 2009, 18:55
Hallo zusammen,

ich habe hier eine Anwendung, die mittels Plugins Daten exportieren soll. Zu dem Thema Plugins gibt es ja sowohl hier im Board als auch im Internet eine Menge Themen.

Ich habe mich dazu entschlossen, mit einem "type IExport = interface" zu arbeiten; also _nicht_ mit einer Klasse, die weitervererbt und deren Methoden überschrieben werden.

Nun zum Problem :

Ich möchte zum einen einen CSV-Export, zum anderen einen SQL-Adapter schreiben. Beide haben natürlich eine Methode "Export", allerdings haben beide auch _unterschiedliche_ Properties - für CSV brauche ich einen Pfad, für SQL brauche ich einen Connectionstring.

Nun suche ich einen eleganten Weg, nicht alle nur denkbaren Parameter in das Interface reinzuschreiben - die dann je nach Anwendungsfall ungenutzt wären. Wie kann man das am besten machen ?

Eine Idee dazu habe ich, weiss aber nicht, ob die "elegant" ist - das ganze sähe so aus:

Interface:
Delphi-Quellcode:
type
  IExport = interface
    procedure Export(.....);
    procedure SetParameter(paramname, value: string);
  end;
Implementation:
Delphi-Quellcode:
unit T_ExportCSV;

type
  TExportCSV = class(TInterfacedObject, IExport)
  protected
    procedure Export(.........);
    procedure SetParameter(paramname, value: string);
  private
    FExportDir: string;
  public
    constructor Create;
    destructor Destroy; override;
  end;

implementation

procedure TExportCSV.Export(.........);
...

procedure TExportCSV.SetParameter(paramname, value: string);
begin
  if (paramname='FExportDir') then FExportDir:=value; // ToDo: Plausi Checks
end;
Hauptprogramm:
Delphi-Quellcode:
var
  ExportCSV: IExport; // !!! Typ IExport, nicht TExportCSV!

begin
    ExportCSV:=TExportCSV.Create;
    ExportCSV.SetParameter('FExportDir', 'C:\csvdir');
Vorweg: Ich kann NICHT ExportCSV vom Typ TExportCSV machen, das wäre zum einen ja an meiner Pluginstruktur "vorbei" zum anderen will ich später ein Array vom Typ TExport verwenden, in dem sowohl die SQL als auch die CSV-Plugins verwaltet werden sollen.

Gibts eine bessere Möglichkeit und
Kann ich in "SetParameter" das "If" vermeiden mit sowas wir Var(paramname):=value ???

lg
Sebastian
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz