[quote=Dieter,17.04.2004, 11:01]Hallo,
ich habe
- eine Datei mit Config-Variablen
- ein Hauptprogramm
- verschiedene (unterschiedliche) Klassen
Sowohl im Hauptprogramm als auch in den Klassen werden die Inhalte bestimmter Config-Variablen benötigt.
Die Config-Variablen liegen als Hash Referenz vor.
Der Konstruktor:
my $sys = SysConfig->new($config);
liefert die Hash-Referenz an die Klasse SysConfig.
Innerhalb der Klasse SysConfig wird dann ein wenig herumgewerkelt (u.a. wird $config einiges an Feldern hinzugefügt) und $config wird Bestandteil von $self.
Nun habe ich aber auch eine Klasse die sich ausschließlich mit I/O - Vorgängen beschäftigt, dabei unbedingt die innerhalb der Klasse SysConfig ermittelten Werte benötigt während die Klasse SysConfig (zur Ermittlung eben dieser Werte) auf die Methoden der I/O Klasse zurückgreifen muß.[/quote]
Ich hab hier mal Fragen / Anmerkungen, kannst Du die bitte beantworten / berichtigen?
1.) Die Daten aus der Datei mit den Config-Werten werden nur einmal eingelesen (momentan in ein Hash).
2.) Die Klasse SysConfig benöntigt zum Ermitteln ihrer Werte die Config-Daten aus obiger Datei (jetzt im Hash).
3.) Um die Konfigurationsdatei einzulesen, braucht man keine Methoden aus der IO-Klasse.
4.) Allerdings braucht SysConfig Methoden aus der IO-Klasse, um weitere Informationen zu ermitteln.
5.) Die IO-Klasse braucht die Informationen aus der Klasse SysKonfig.
Das ist wirklich eine ziemlich ätzende Situation, die wohl ein neues Design erfordert. Du musst vermutlich in beiden Klassen versuchen, die sich gegenseitig verlangenden Teile zu ermitteln und das Problem irgendwie lösen.
Wenn es aber dann immer noch so ist, dass A B braucht um zu funktionieren und B aber A, dann ist das Problem schlicht nicht lösbar.
Das kann ich mir im Moment aber noch nicht vorstellen. Vielleicht solltest Du mal etwas deutlicher machen, was für Funktionen das in IO sind und warum die Infos aus SysConf brauchen. Irgendwie werden wir das schon aufdröseln können.
Edit: Ev. hilft ein Stufenkonzept nach dem Motto: Für die IO-Teile, die ich für SysConf brauche, habe kann ich die Informationen ohne IO-Methoden oder mit IO-Methoden, die unabhängg von (diesen) SysConf-Informationen sind, ermitteln.
(Falls Du verstehst was ich meine. Das führt dann zu so einem Doppel-Treppen-System, erst eine Stufe SysConf, dann damit die ersten IO-Methoden, dann mit denen weitere SysConf-Daten ermitteln, damit weitere IO-Methoden, damit wieder SysConf-Daten einlesbar etc.)\n\n
<!--EDIT|Crian|1082535304-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite