Hi Leute!
Ich steh hier von einem kleinen großen Problem: ich hab für eine Anwendung von mir eine Singleton-Klasse geschrieben, die Daten aus einer Datenbank in eine HashMap lädt und die Methode getValue(keyname) kann man dann einen Wert aus der HashMap holen. Die Klasse ist deswegen ein Singleton, weil sie von vielen anderen Klassen gebraucht wird, aber eben nur einmal bestehen sollte, es wäre Schwachsinn, wenn jede Klasse die auf diese Daten zugreifen muss, jedesmal eine neue Instanz erzeugt. Soweit ja alles kein Problem. Die Klasse hat jetzt also eine HashMap und eine Methode getValue().
Jetzt ist aber die Anwendung gewachsen und ich brauch diese Klasse drei mal bzw. es müssen in dieser Anwendung drei dieser Instanzen vorhanden sein, aber jeweils mit unterschiedlichen Daten. Das einfachste wäre natürlich die Klasse zu kopieren, dann hätte ich Singleton1, Singleton2 und Singleton3 mit jeweils unterschiedlichen Daten. Aber das macht IMHO keinen Sinn und passt nicht wirklich in das Konzept von Objektorientierung. Also dachte ich mir ich mach eine Klasse Singleton, die als Basis die HashMap und die Methode hat. Zusätzlich hat diese eine Methode loadHashMap(), die die Daten lädt. Dann baue ich für jede weitere "Instanz" eine Klasse, die von Singleton erbt und nur die Methode loadHashMap() überschreibt. Aber das klappt nicht so ganz, da die HashMap im Singleton ja private ist und damit nicht überschrieben werden kann.
Weiß jemand Rat wie man so ein Problem am besten löst?
Danke & viele Grüße,
Martin
Ich steh hier von einem kleinen großen Problem: ich hab für eine Anwendung von mir eine Singleton-Klasse geschrieben, die Daten aus einer Datenbank in eine HashMap lädt und die Methode getValue(keyname) kann man dann einen Wert aus der HashMap holen. Die Klasse ist deswegen ein Singleton, weil sie von vielen anderen Klassen gebraucht wird, aber eben nur einmal bestehen sollte, es wäre Schwachsinn, wenn jede Klasse die auf diese Daten zugreifen muss, jedesmal eine neue Instanz erzeugt. Soweit ja alles kein Problem. Die Klasse hat jetzt also eine HashMap und eine Methode getValue().
Jetzt ist aber die Anwendung gewachsen und ich brauch diese Klasse drei mal bzw. es müssen in dieser Anwendung drei dieser Instanzen vorhanden sein, aber jeweils mit unterschiedlichen Daten. Das einfachste wäre natürlich die Klasse zu kopieren, dann hätte ich Singleton1, Singleton2 und Singleton3 mit jeweils unterschiedlichen Daten. Aber das macht IMHO keinen Sinn und passt nicht wirklich in das Konzept von Objektorientierung. Also dachte ich mir ich mach eine Klasse Singleton, die als Basis die HashMap und die Methode hat. Zusätzlich hat diese eine Methode loadHashMap(), die die Daten lädt. Dann baue ich für jede weitere "Instanz" eine Klasse, die von Singleton erbt und nur die Methode loadHashMap() überschreibt. Aber das klappt nicht so ganz, da die HashMap im Singleton ja private ist und damit nicht überschrieben werden kann.
Weiß jemand Rat wie man so ein Problem am besten löst?
Danke & viele Grüße,
Martin