Witam panowie i panie [green] , mam pewien dylemat z którym nie do końca umiem sobie poradzić otóż zawsze co tworzyłem aplikacje to jej konfiguracja -zmienne,konfiguracja wysokości etc,dostęp do plików itd były w każdej klasie gdzie było to potrzebne .A teraz zastanawiam sie czy nie lepiej zapisywać cała konfiguracje w jednym pliku i później extends Config , tylko później będzie problem żeby coś dziedziczyć od innej klasy , bo z tego co mi wiadomo to java nie obsługuje wielokrotnego dziedziczenia.Czekam na wasze sugestie na 80% wiem co wybrać ale chętnie poczytam wasze opinie na ten temat.Zapraszam do dyskusji [soczek]
Jest masa możliwości.
Pierwsza to użycie plików properties i narzędzia do konfiguracji. Przykładowo w konstruktorze:
public Obj(){
HashMap<String> conf = PropertyConfigurationUtil.getConfigurationForObject("obj"); //podajesz class name;
// tutaj konfigurujesz
}
Metoda dobra jak używasz singletonów, bo jest kosztowna. Można ją zoptymalizować o ile umiesz posługiwać się refleksją. Zamiast properties mozesz użyć własnego xmla.
Druga metoda to JavaBeans podajesz konfigurację w xmlu i tworzysz obiekty za pomocą fabryki - beana. Ma ona wczytaną z xmla konfigurację dla obiektu i zanim zwróci nowy obiekt odpowiednio go skonfiguruje.
Możesz też wykorzystać oparty o beany framework aplikacji taki jak Spring. Robi to co poprzednia propozycja, ale jednocześnie dba o spójność, zależności pomiędzy klasami i zarządza cyklem życia obiektów.
Witam
A nie mozna uzyc czegos takiego jak
static final zmienna;
czy to nie z tym sie je:)?
:)
sam sobie odpowiedzialem na to pytanie.
Bedzie problem z konfiguracja, w razie zmian, trzeba zmian dokonac w kodzie.:)
@chimera80, w dodatku poza koniecznością zmiany konfiguracji przez rekompilację kodu dochodzi problem dziedziczenia. Zmiennych final nie dziedziczy się i nie można ich w praktyce nadpisać. Jest jeszcze jedna metoda polegająca na konfigurowaniu za pomocą properties tylko połączenia do bazy danych i trzymania wszystkich konfiguracji w bazie. Widziałem coś takiego w praktyce i bardzo fajnie się sprawdzało.