Ik ben bezig met een software distributie systeempje te maken in JAVA. Ben nu bezig met de server. Nu heeft deze server een aantal settings. Deze settings moeten uit een config bestandje worden gehaald. Nu wil ik het zo ontwerpen:
Ik heb een settings classe, ongeveer zoiets:
Deze classe is een singleton (heb cloning ook geblokkeerd). Deze classe laad instellingen uit een config file en zet ze in de juiste subclasse en variablen. Die instellingen laden doe ik dmv de loadSettings() methode, die private is en die wordt aangeroepen in de private constructor (singleton remember). Ik heb deze classe in subclasses opgedeeld om wat overzicht te creeeren.
Dit is een voorbeeld van zo'n subclasse, ServerSettings:
Nu wil ik dit door de hele applicatie kunnen aanroepen door:
Allemaal heel leuk en aardig, maar als ik dit zo doe kun je in de hele applicatie ook die waarden veranderen, ik wil dat echter niet toestaan. Ik wil dus zorgen dat je in de hele applicatie die waarden niet kan veranderen, maar dat ze wel geset kunnen worden door de Settings classe.
De vraag is nu, hoe implementeer ik dit? Het kan wezen dat ik te moeilijk denk, vandaag met gemak al teveel gedaan, maar ik kan er maar niet opkomen.
Ik heb naar final gekeken, maar die kun je geloof ik niet zelf setten, dus dat is geloof ik geen oplossing.
Ik heb een settings classe, ongeveer zoiets:
| Settings |
| Server : ServerSettings Client : ClientSettings Log : LogSettings |
| getInstance() : Settings loadSettings() : void |
Deze classe is een singleton (heb cloning ook geblokkeerd). Deze classe laad instellingen uit een config file en zet ze in de juiste subclasse en variablen. Die instellingen laden doe ik dmv de loadSettings() methode, die private is en die wordt aangeroepen in de private constructor (singleton remember). Ik heb deze classe in subclasses opgedeeld om wat overzicht te creeeren.
Dit is een voorbeeld van zo'n subclasse, ServerSettings:
| ServerSettings |
| ServerName : String ListenInterface : Interface PortNr : Integer |
Nu wil ik dit door de hele applicatie kunnen aanroepen door:
Java:
1
| Settings.getInstance().Server.PortNr |
Allemaal heel leuk en aardig, maar als ik dit zo doe kun je in de hele applicatie ook die waarden veranderen, ik wil dat echter niet toestaan. Ik wil dus zorgen dat je in de hele applicatie die waarden niet kan veranderen, maar dat ze wel geset kunnen worden door de Settings classe.
De vraag is nu, hoe implementeer ik dit? Het kan wezen dat ik te moeilijk denk, vandaag met gemak al teveel gedaan, maar ik kan er maar niet opkomen.
Ik heb naar final gekeken, maar die kun je geloof ik niet zelf setten, dus dat is geloof ik geen oplossing.