Gå til innhold

Beste forholdet mellom utsyn og presentatør i MVP-mønsteret


Anbefalte innlegg

Hei,

 

Jeg er en ivrig hobbyprogrammerer som jobber med Google Web Toolkit (GWT). Har i den senere tid sett en del på hvordan man kan implementere Model-View-Presenter (MVP) mønsteret i GWT.

 

Lurer derfor på hva som ansees som beste relasjon mellom utsynet og presentatøren? Etter litt lesing både her og der på ymse forum mm sitter jeg igjen med to kandidater:

 

- Passivt utsyn der alle lytte-metodene ligger i presentatøren og kobles til/fra utsynet? Utsynet er 'dumt' og viser bare frem data presentatøren ber det om.

 

- Aktivt utsyn som lytter til egne widgets og kaller kommandoer på presentatøren? Utsynet er 'smartere' og bestemmer selv hvilke metoder det kaller i presentatøren, som sitter med all logikken.

 

Selv synes jeg den passive varianten kanskje virker mer tiltalende mhp testing med junit og bytte av utsyn, men den aktive utgaven kan lettere brukes med GIN? Er veldig interessert i å høre hva dere som jobber med dette til daglig mener om saken? Hva tenker dere er fordelene og ulempene med de to ulike måtene ift utvikling av større systemer?

Endret av ti-guru
Lenke til kommentar
Videoannonse
Annonse

Jeg mener passivt view (eller utsyn som du sier) er bedre fordi viewet som regel er det som er vanskelig å teste (med automatiserte tester), og jeg derfor vil ha minst mulig logikk der. Men jeg har ikke eksperimentert mye med ulike løsninger, så jeg er åpen for andre meninger.

 

I blogposten TDD og mocking i praksis implementerer jeg litt webfunksjonalitet i asp.net med en variant av MVP som Martin Fowler kaller supervising controller (jeg tror i alle fall min løsning passer inn der). Ta gjerne en titt - jeg mener jeg forklarer ganske grundig hvordan jeg tenker når jeg går frem..

Lenke til kommentar

Okey! Jeg synes også passivt utsyn hørtes mest ryddig ut, spesielt mhp å kunne plugge inn nye utsyn for ulike platformer og mulighet til å teste alt av logikk. Men, da jeg leste bloggen over + diskusjonen på google groups, så fikk jeg inntrykk av at aktivt er bedre. Grunnen til dette er kort:

 

- slipper å mocke interface med HasText, HasClickHandler eller HasXXX osv.

- slipper å skrive egne klasser med egne interface dersom man ønsker funksjonalitet utover det GWT tilbyr, f.eks må man skrive interface HasVisible selv for å kunne skyggelegge knapper.

- slipper masse 'kokeplatekode' (boilerplate...) med indre lyttemetoder.

- mocking kan gjøres med en enkel POJO i stedet for mocking av alle HasXXX interfacene.

- enkel funksjonalitet kan kodes inn i utsynes, f.eks å skru av en knapp når et felt er tomt, slik at

man slipper at slik kode forkludrer logikken i presentatøren.

 

Ulempen med aktivt ser ut til å være:

 

- mer logikk i utsynet, dvs utsynet får vite mer om modellen og ikke all logikk blir testbar.

- mer kode som går frem og tilbake mellom utsyn og presentatør, dvs vanskeligere å plugge inn nytt utsyn og skillelinjene blir noe mer uklare.

 

Men, for all del. Jeg er fremdeles ikke sikker på hva som er best; så ønsker fremdeles gode meninger!

 

btw. fin blogg; leser utenfra-og-inn posten nå ;-)

Endret av ti-guru
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...