Powiedzmy, że mamy klasę, która operuje na bardzo wielu obrazkach, które są wykorzystywane przez wszystkie metody tej klasy. Możemy zrobić dwie rzeczy:
- Zadeklarować oraz zainicjować n pól klasy reprezentujących te obrazki:
Image img1 = new Image("img/img1");
Image img1 = new Image("img/img2");
....
Image imgn = new Image("img/imgn");
- W jakimś zwięzłym fragmencie kodu (na przykład plik xml ze ścieżkami do obrazków i pojedyncza pętla) wczytać wszystkie do mapy typu np. HashMap<String,Image>, a następnie odnosić się do nich poprzez wywołania typu:
HashMap<String,Image> images;
....
images.get(img1).operation1();
images.get(img2).operation2();
itd.
Zawsze byłem zwolennikiem wykorzystywania takich map, ponieważ pozwalają często uprościć zapis i pozbyć się niepotrzebnego bałaganu w kodzie - w przedstawionym przypadku - tworzenia licznych pól klasy. Czasem jednak zastanawiam się, czy nie przesadzam. Teoretycznie dostęp do HashMapy zaindeksowanej jakimś Stringiem nie jest bardzo długi (funkcja haszująca), jednak na pewno wolniejszy niż do zwyczajnej zmiennej. Ponaddto jeżeli jeżeli wpiszemy złą nazwę obrazka, to wystąpi błąd czasu wykonania zamiast błędu kompilacji..
Czy może ktoś wyrazić swoją opinię na ten temat, żeby pomóc mi zdecydować się na określony styl programowania?