Programuję amatorsko, uczę się powoli w wolnych chwilach od nieco ponad 2 lat.
Mam mniej więcej ogarnięte kwestie czystości kodu, wzorców projektowych, ogarniam Spring Boota i główne elementy Springa. Ogarniam też podstawy Androida.
Coraz bardziej ciśnie mnie jednak brak wiedzy nad tym jak prawidłowo konstruować architekturę aplikacji. Niby tak by moduły było odpowiednio odseparowane od siebie i komunikujące się między sobą interfejsami. W prostych aplikacjach sieciowych Springa podział ten wychodzi niemal automatycznie, ale gdy logika biznesowa jest rozbudowana to w niej też czuję wewnętrzną potrzebę większego uporządkowania i nie bardzo wiem jak to robić. W książkach niewiele znalazłem na ten temat (może złe czytam), w przykładach, tutorialach zwykle wszystko jest zbyt proste by przedstawiać problemy architektury aplikacji. Niestety nie znam też nikogo kto mógłby mi od ręki pomóc (w efekcie czasem utykam na miesiąc nad czymś co potem wydaje mi się tak proste, że jestem pewien iż komuś innemu wyjaśniłbym to w 10minut).
Najczęściej jednak spotykam się z problemem w którym potrzebuję dostępu w wielu miejscach aplikacji do tych samych prostych struktur danych. Jeśli ich rozmiar to mniej niż 1MB to nie widzę sensu zaprzęgania do tego baz danych. Ciągłe przekazywanie referencji pomiędzy wielu klasami do tych samych kolekcji nie wydaje mi się eleganckim rozwiązaniem. Ale jaka jest alternatywa? Czy uzasadnione w takich przypadkach jest tworzenie dla takich małych struktur danych kolekcji w polach statycznych? Czytam, że w Androidzie wielu tak robi?
Jak powinno się prawidłowo korzystać z małych struktur danych w architekturze aplikacji?
Z góry dzięki za pomoc i sorry za długi opis.