Seite 1 von 1

App - Library - Plugins

Verfasst: 3. Februar 2010 19:02
von hafwil
Hallo!

Ich habe eine Designfrage... Zurzeit habe ich ein MainWindow mit mehreren Dialogen, und einige Singleton Models für die Daten. Die Models sind meine Schnittstellen zur Datenbank. Da ich für verschiedene Kunden die Dialoge immer anpassen / erweitern bzw. ein- oder ausblenden muss hab ich mir gedacht, ich löse das über Plugins und kann dann z.B. für neue Kunden einfach ein neues Plugin erstellen. Die Models bleiben immer gleich. Allerdings muss ich von jedem Dialog auf die Singleton Instance von den Models zugreifen können, damit ich die Views immer auf dieses Model verbinden kann. Ich würde jetzt die Models in eine Library packen, und diese zu den Plugins linken. Meine Frage ist jetzt, ob dies der richtige Weg ist oder ob es hier eine bessere Lösung gibt?
Ich hab mir auch überlegt, den Dialogen eine Referenz auf das Model zu übergeben, damit müsste ich nur die Header Dateien inkludieren und nicht gegen die Library linken.
Als Beispiel:
- ein DatenpunktModel, welches bei der ersten Instanzierung die Daten aus der Datenbank holt, und später kann man Datenpunkte hinzufügen/ändern/löschen
- ein Dialog zum Hinzufügen/Bearbeiten/Löschen von Datenpunkten
- ein Dialog der Datenpunkte + weitere Infos visualisiert

Ich möchte natürlich für beide Dialoge das gleiche Model, damit ich alle Änderungen in den Views sofort mitbekomme.

Vielen Dank!

Verfasst: 4. Februar 2010 09:15
von RHBaum
Das was du als Model bezeichnest, klingt fuer mich auch stark nach Protokoll / Schnittstelle.
Ich wuerd fuer dein (Daten)Model sogar 2 Schnittstellen implementieren. eine lesende und eine schreibende Schnittstelle.
Die Instanz des Datenmodells kannst natuerlich weiter als Singleton implementieren.

Noch ne Anmerkung zu den Plugins, wenn welche schreibst.
Tu Dir den gefallen, und mach alles was ueber die Plugin schnittstelle geht nur mit PODS und 100% abtstracten klassen (protokollklassen).
Niemals zeugs exportieren, was irgendwie irgendwas implementiert, auch keine qt klassen.
Ansonsten bekommst immer versionsprobleme. Sprich du äanderst was ein deiner Impl, und scho werden die schnittstellen binaerinkompatibel, das heisst du musst die plugins zumindest immer mit neukompilieren, wenn ned gar anpassen.
Bei groesseren Projekten iss das nen Zeit und Geld fresser.
Wenn sicherstellen kannst, das immer nur du Plugins schreibst, kannst das bissi lockerer sehen, aber eigentlich braucht man dann auch keine richtigen plugins mehr :-)

Ciao ...