vgabor96 / Java-based-enterprise-software-development

0 stars 1 forks source link

Hibás MVC #8

Open Michael1993 opened 4 years ago

Michael1993 commented 4 years ago

Az MVC minta azt jelenti hogy van a nézet, az adat és a logika, külön-külön és egyik sem keveredik a másikkal.

Példának okáért, nem építünk Java kódban HTML elemeket (<button>, <tr>...).

Ha meg akarunk jeleníteni adatokat a View (nézet réteg)-ban, ne nincs rendelkezésre álló objektum ami tárolná az összes adatot amit meg akarunk jeleníteni, akkor a Controller (logikai réteg) feladata hogy átkonvertálja/összecsomagolja a Model (adat réteg)-ből érkező adatokat egy darab objektumba és azt átadja a View (nézet réteg)-nak.

Michael1993 commented 4 years ago

A megoldás nem rossz, de nem is jó. Ha most valakinek át kellene adnod a projektet, akkor viszonylag sokáig tartana rájönnie hogy milyen adatai vannak a táblának.

Ezért szoktunk DTO-kat, vagyis Data Transfer Object-eket használni. Logikailag minden adat ami a táblázatban megjelenik, együtt kezelhető (Encapsulation): ezért szoktunk csinálni egy olyan osztályt aminek olyan mezői vannak mint a táblázatnak. Ezt példányosítja a service, feltölti adatokkal, és ezt (vagy egy ilyen listát) ad át a View-nak. Fontos, hogy ez logikailag a Service-hez tartozik (nem a View-hoz, ahol nem lehet Java kód vagy a Domain-hez aminek nincs köze a megjelenítéshez csak az alkalmazás logikájához)!

Így wagers.get(X) helyett lehet ilyen a .jsp fájlban: wagerDto.getId(), wagerDto.getAmount() vagy wagerDto.getEvent(), amiből egyből látszik milyen adat kerül a táblázatba.