Aplikacja Webowa Spring - Duża ilość modeli

Aplikacja Webowa Spring - Duża ilość modeli
0

Hej

Tworzę aplikację w Springu

Mam warstwę Serwisów w której dokonuje obliczeń i zwracam zmienne które są przekazywane do Controllera

Mój problem polega na tym że mam dużo tych zmiennych i chciałbym zmniejszyć ilość kodu w Controlerze

teraz to wygląda tak:

model.addAttribute("zmienna1", serwis.obliczZmienna1);
model.addAttribute("zmienna2", serwis.obliczZmienna2);
model.addAttribute("zmienna3", serwis.obliczZmienna3);
model.addAttribute("zmienna4", serwis.obliczZmienna4);
.............
model.addAttribute("zmienna10", serwis.obliczZmienna10);

Jak zmniejszyć ilość powtarzanego kodu w Controlerze ?

0
Brunatny Pomidor napisał(a):

Hej

Tworzę aplikację w Springu

Mam warstwę Serwisów w której dokonuje obliczeń i zwracam zmienne które są przekazywane do Controllera

Mój problem polega na tym że mam dużo tych zmiennych i chciałbym zmniejszyć ilość kodu w Controlerze

teraz to wygląda tak:

model.addAttribute("zmienna1", serwis.obliczZmienna1);
model.addAttribute("zmienna2", serwis.obliczZmienna2);
model.addAttribute("zmienna3", serwis.obliczZmienna3);
model.addAttribute("zmienna4", serwis.obliczZmienna4);
.............
model.addAttribute("zmienna10", serwis.obliczZmienna10);

Jak zmniejszyć ilość powtarzanego kodu w Controlerze poprzez sprytna redukcje model.add ?

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Ty tak poważnie? A czemu nie zrobisz sobie w takim razie klasy która agreguje te parametry i serwisu który wywoła te wszystkie obliczX i zwróci ci ten agregat?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
0
Shalom napisał(a):

Ty tak poważnie? A czemu nie zrobisz sobie w takim razie klasy która agreguje te parametry i serwisu który wywoła te wszystkie obliczX i zwróci ci ten agregat?

mógłbyś zademonstrować na przykładzie?

TP
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:21
0

Napisz czego nie rozumiesz z tego co napisał Shalom. Lepszym sposobem na naukę będzie zrozumienie problemu, tak byś mógł to rozwiązanie wykorzystać w przyszłości niż kopiowanie z gotowca.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

o_O

Kopiuj
class AggregateService{
    public AggregateValue get(){
        return new AggregateValue(service1.calculate1(), service2.calculate2(), service3.calculate3(),...);
    }
}

i voila, w kontrolerze teraz masz tylko aggregateService.get()


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
PI
No tu jeszcze te wiele argumentów w konstruktorze nie jest zbyt ładne
Shalom
Jeśli wszystkie zawsze są wypełnione to nie widzę sensu kombinować. A jeśli nie to pozostaje choćby builder.
0
Shalom napisał(a):

o_O

Kopiuj
class AggregateService{
    public AggregateValue get(){
        return new AggregateValue(service1.calculate1(), service2.calculate2(), service3.calculate3(),...);
    }
}

i voila, w kontrolerze teraz masz tylko aggregateService.get()

Wszystko ok , a

Zrobiłem troszeczkę inaczej w serwisie Stworzyłem metodę która zwraca Map<String,Double>
do każdej obliczonej zmiennej Double przypisuję nazwę String, dodaję do mapy.
Następnie w Controllerze

model.addAllAttributes(service.getMap);

Wystarczy poczytać troszkę dokumentacji , ale wybaczcie mi uczę się :)

Działać działa , co Wy na to?
Czy sposób Shaloma jest korzystniejszy?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.