Separazione dell'interfaccia utente dalla logica

0

Sto cercando di sviluppare un piccolo gioco e per questo mi piacerebbe separare l'interfaccia utente dalla logica di gioco.

Quindi sto pensando di usare una classe "Animator" che sarà responsabile del rendering degli oggetti, ma qui ho un po 'di dilemma. Posso pensare a 2 opzioni per implementarlo:

Opzione 1: per ogni oggetto, "Animator" avrà una classe ObjectAnimator che esporrà un metodo "Render (IAnimatedObject)". Riceverà l'intero oggetto e lo renderà in base al suo stato attuale. Il problema che vedo qui è che ogni oggetto dovrà mantenere lo stato di animazione dentro di sé che aumenta l'accoppiamento tra l'oggetto e l'animazione. Il vantaggio di questo approccio è che l'oggetto non conosce il suo ObjectAnimator ...

Opzione 2: Ogni oggetto esporrà un metodo "GetAnimator" che ci darà il suo oggetto animato. il problema che vedo qui è che se ho centinaia di oggetti, avrò bisogno di avere anche centinaia di oggetti ObjectAnimator. Aumenterà anche l'accoppiamento tra l'oggetto e l'oggetto di animazione perché l'oggetto dovrà conoscerlo animatore. D'altra parte, l'oggetto stesso non dovrà tenerlo stato di animazione.

quale opzione è migliore? È lì un'opzione ancora migliore di quelle che ho scritto?

    
posta Idov 18.10.2014 - 14:06
fonte

1 risposta

2

Ruba un'idea alle librerie GUI: ogni oggetto drawable implementa Drawable che ha un metodo:

draw(graphics_context)

Questo approccio è stato presente in quasi tutte le gerarchie gui che posso ricordare, comprese le tele.

    
risposta data 25.10.2014 - 06:58
fonte

Leggi altre domande sui tag