Thread Tk: Document-View Architektur?: GUI Konzept...
(18 answers)
Opened by BratHering at 2005-11-15 15:47
Hallo! Die letzten Tage habe ich mit Nachdenken vebracht :D und bin zu einer Idee gekommen, wie man eine (so wie als ob) Document-View-Architektur in Perl aufbauen könnte. Hierzu hätte ich gerne die Meinungen von erfahrenen Perl Programmierern, denn ich bin nicht so sehr erfahren. ;)
Ich versuche es anhand des unteren groben Diagramms zu erklären: Main.pl: Der Aufruf von Main.pl macht lediglich zwei "use" Aufrufe und sonst nichts (Module: Document.pm & View.pm). Eventuell nur noch einige Vorbereitungen im BEGIN Block und einige Nachbereitungen im END Block, also ja. Document.pm: Zuerst wird das Modul Document.pm aufgerufen. Dies ist der Scope in dem sich alles rund um das "Document" drehen wird. Also d.h. Document.pm ruft die Klasse Doc.pm auf und bildet eine einzige Objekt-Instanz davon (das Objekt in dem sämtliche anwendungsspezifischen Dinge gespeichert werden / so wie es auch nur eine einzige Instanz von dem Document-Objekt in VisualC++ gibt). Danach wird das Modul Functions aufgerufen, dieses beinhaltet nur sub-Routinen die von der Anwendung nach aussen hin fungieren (sprich diese Funktionen sammeln alle Informationen z.B. aus der Windows-Registy oder aus irgendwelchen Dateien auf der Festplatte um diese im Document zu speichern). Doc.pm: Dies ist die eigentliche Dokument-Klasse von der ein einziges Objekt in document.pm instanziiert wird. Es beinhaltet sämtliche Methoden, die für das Objekt notwendig sind. Das Objekt wird nur über die Methoden manipuliert. Functions.pm: Dies sind die bereits o.g. Funktionen, die mit der Aussenwelt kommunizieren. Die Funktionen werden von Document.pm aus aufgerufen und die Rückgabewerte werden in dem Dokument-Objekt gespeichert. Functions.pm bildet aus den Informationen, die es bekommt, beliebig viele Objekte vom Typ Profile bzw. Mod, die dann die eigentlichen Rückgabewerte an den Document-Object-Container sind. Aber dies führt schon zu sehr auf meine Anendung hin. View.pm: Dies ist das Modul für den View. Erst wenn Document.pm fertig und Fehlerfrei initialisiert worden ist, wird View.pm von Main.pl aufgerufen. Es beinhaltet die Tk-Forms und -Widgets. Auch "tkinit" und "MainLoop" befinden sich darin (ich habe es bereits ausprobiert und es scheint zu funktionieren). View.pm holt sich die nötigen Informationen zum Darstellen aus dem Dokument-Objekt und generell wird View selbst nur dazu benutzt den Inhalt aus dem Dokument-Objekt wiederzugeben und wenn Änderungen im Dokument-Objekt stattfinden, dann wird View sich über Callbacks aktualisieren. Dieses Callbacks.pm Modul wird vom View aus aufgerufen. Calbacks.pm: Über diese Callbacks werden Änderungen am Dokument-Objekt vorgenommen und der View wird aktualisiert. Die Callbacks greifen aber nur auf Methden vom Dokument-Objekt (die schnittstelle des Objektes) zu. z.B. könnte man das Modul Functions.pm weiter kapseln in Module die Funktionen für Datenbanken oder für Dateisysteme Zugriffe beinhalten. Auch den View könnte man noch weiter kapseln in Forms und Widgets, etc. http://people.freenet.de/biteme/misc/DocumentViewA... Oh mann, ich kann nur hoffen, dass jemand mich versteht? :D MfG BratHering |