Toon posts:

[Java]MVC probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, ik ben voor het vak design patterns bezig met een arcanoidkloon. Op dit moment heb ik een aantal modellen gemaakt voor de objecten, zoals bal, paddle etcetera. Deze modellen staan geregistreerd bij een mediator die voor de interactie tussen de modellen zorgt. Al deze modellen hebben views en de mediator heeft een soort viewcontainer die alle views tekent. Nu is mijn probleem dat er bij bijvoorbeeld powerups er nieuwe modellen en views worden gemaakt, om de modellen bij de mediator(supermodel) te registreren is geen probleem, alleen is het probleem om de view bij de hoofdviewcontaier toe te voegen. Omdat ik namelijk geen instantie van mijn view in mijn model heb maar alleen andersom. Ik weet dat het een beetje vaag verwoord is, maar wie kan mij in de goeie richting sturen.


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        Ball ball = new Ball( 10 );
        Paddle paddle = new Paddle( new Rectangle(10, BOUNDS.height - 150, 100, 20) );
        Player player = new Player( new Rectangle(0, BOUNDS.height - 100, BOUNDS.width, 100) );
        Wall wall = new Wall( new Rectangle(0, 100, BOUNDS.width, 100), level1 );

        arcanoid.setBall( ball );
        arcanoid.setPaddle( paddle );
        arcanoid.setPlayer( player );
        arcanoid.setWall( wall );

        ArcanoidView arcanoidview = new ArcanoidView( gc, arcanoid );
        BallView ballview = new BallView( ball );
        WallView wallview = new WallView( wall );
        PaddleView paddleview = new PaddleView( paddle );
        StatusView statusview = new StatusView( player );
        arcanoidview.addView( ballview );
        arcanoidview.addView( paddleview );
        arcanoidview.addView( statusview );
        arcanoidview.addView( wallview );

(Weet dat ik nog veel moet refactoren)

[ Voor 40% gewijzigd door Verwijderd op 14-05-2005 14:56 ]


  • BestTested!
  • Registratie: Oktober 2003
  • Laatst online: 19:54
Ik vind 't nogal warrig zoals je 't uitlegd. Zou je misschien iets van een UML-stukkie of je classen-opbouw kunnen tonen?

Verwijderd

Topicstarter
Ball, Paddle, Player ---------------- Arcanoid
BallView -------Ball etc
Views----------------ArcanoidView

------is praat met

als bijvoorbeeld de ball uit het scherm gaat zegt ie
arcanoid.killed();

maar het probleem is dus, dat ik vanuit deze objecten geen connectie heb met de mainview, waar alle views in zitten

[ Voor 4% gewijzigd door Verwijderd op 14-05-2005 14:59 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Dan maak je van de mainview toch een Singleton? Of begrijp ik het verkeerd?

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
hmmm ja dat zou ook kunnen, maar is dit wel netjes

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Je kunt een Singleton gebruiken als je op meerdere plaatsen 1 enkele instantie van een bepaalde class nodig hebt, waar je dan aanpassingen en operaties op uit moet voeren, welke dan ook van toepassing zijn op de andere plaasten waar hij gebruikt wordt. Dit is vooral handig als je niet gemakkelijk deze instantie als parameter kunt meegeven richting de plaatsen waar hij nodig is. Het doorgeven van zo'n instantie langs allerlei functies die er eigenlijk niets mee doen is smeriger dan het gebruik van een Singleton. Niet zomaar overal voor gebruiken, maar als je goede redenen hebt is er niets mis mee.

Noushka's Magnificent Dream | Unity


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Je kunt ook door het model een event laten gooien. Als je nl van de view een singleton maakt wordt 'ie alsnog aangeroepen vanuit het model, en dat wil je nu juist vermijden. In [rml][ java] custom event listener[/rml] geeft Alarmnummer een duidelijk voorbeeld van events

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"

Pagina: 1