Toon posts:

[delphi] MVC toepassen in bestaande applicatie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben bezig met een delphi applicatie en wil een MVC toepassen. De implementatie van een MVC is niet het probleem, ik vraag me alleen af hoe ik het ontwerp het best in mijn programma kan toepassen.

Het ontwerp van mijn bestaande applicatie is als volgt:
code:
1
2
3
4
5
6
7
8
type
    TMyThing = class
    private
      FCommunication: TCommunication
      // ..
    public
      // ..
    end;

TCommunication leest bytes in. Dit werkt helemaal goed.

Nou wil ik een observer maken die aangeeft via een progressbar op een form wat de stand van zaken is.

Hiervoor heb ik

type TObservable = class

type TObserver = class
type TStatusForm = class(TObserver)

De vraag is nu, welke class in mijn bestaande prog is nu het best geschikt om afgeleid te worden van TObservable. Ik heb zowel TMyThing als TCommunication geprobeerd, maar beide werken niet echt heel lekker.

Toch denk ik zelf dat TCommunication de beste oplossing is, omdat TMyThing vanuit TCommunication niet bereikbaar is. Of zijn er misschien nog andere opties?

edit: typo

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Tja als het beiden niet lekker werkt.

Het ligt vooral aan de betekenis van de observers. Geven die de status van het communicatie geval weer of van dat andere geval?

Datgene waarvan de status weergegeven wordt moet in beginsel belast zijn met het informeren van de view.

Dus als je puur en alleen op het communicatie ding staat te wachten, laat die het doen. Gebeurt er meer in de code van de eigenaar van het communicatie ding, dan moet de omliggende klasse ermee belast zijn.

Verwijderd

Ik denk niet dat je nu niet zo'n mooie structuur neerzet. Persoonlijk zou ik het volgende voorstellen:
maak in Communication alle gegevens (aantal gelezen bytes en dergelijke) in read-only properties public. Misschien zelfs een Event in TCommunication zetten die een update aanduid van gegevens aanduid voor de buitenwereld.

Nu heb je 2 keuze's:
TCommunication in een form zetten en met de events en properties zorgen dat je deze zelf update.

Een TMonitor maken die eigenlijk hetzelfde doet als het form, alleen dan in een Component.

succes!