Tijdens mijn zoektocht naar het Model-View-Controller pattern, stuite ik op dit artikel waarin uitgelegd wordt hoe je logica van je controls kan scheiden. Zelf zat ik al hard na te denken over hoe ik het MVC kon implementeren, en kwam toen op een ongeveer zelde constructie uit. Het kan zijn dat ik de elementen uit MVC op een verkeerd niveau plaats, graag hier dan reactie op.
De TreeView beschouw ik als de Controller, aangezien hier de input van de gebruiker op binnenkomt. Deze TreeView heeft een verwijzing naar de TreeNodes, wat de Views in het verhaal zijn. Zij zijn tenslotte verantwoordelijk voor het tonen aan de gebruiker. In de Tag van zo'n TreeNode zit een verwijzing naar een object in een lijst, verborgen in een onderliggende class. Ik zie nu dit object als Model. Dit object heeft dan ook een lijst met verwijzingen naar de TreeNodes die naar hem wijzen, zodat hij kan iedereen kan waarschuwen als ie zelf gewijzigd is. Hierdoor kunnen meerdere TreeNodes dezelfde waarde bevatten, en tegelijkertijd geupdate worden.
Ik ben er dus niet helemaal zeker van of ik niet de TreeView als View moet beschouwen, omdat de TreeNode misschien een te laag niveau is. Maar wat is dan de Controller? Of is de TreeView beiden?
En is het ok dat ik het object in een lijst (omdat het om een TreeView gaat) als Model beschouw? Of zou ik veel eerder de lijst zelf als Model moeten zien? Dat lijkt me wel aannemelijk wanneer de TreeView als View beschouwd wordt.
Voor de TreeView is bovenstaand verhaal aannemelijk. Maar wat als je een TextBox in het MVC pattern wilt gieten? Moet je dat dan alleen voor dat betreffende control doen, of geldt het pattern meer voor de complete GUI? Het nadeel hiervan is, net als met dat je de TreeView als View ziet, dat bij een wijziging er veel meer geupdate moet worden dan nodig is.
Op welke punten verschilt het MVC pattern nog (zoals ik hierboven beschreven heb) van het MGM pattern?
De TreeView beschouw ik als de Controller, aangezien hier de input van de gebruiker op binnenkomt. Deze TreeView heeft een verwijzing naar de TreeNodes, wat de Views in het verhaal zijn. Zij zijn tenslotte verantwoordelijk voor het tonen aan de gebruiker. In de Tag van zo'n TreeNode zit een verwijzing naar een object in een lijst, verborgen in een onderliggende class. Ik zie nu dit object als Model. Dit object heeft dan ook een lijst met verwijzingen naar de TreeNodes die naar hem wijzen, zodat hij kan iedereen kan waarschuwen als ie zelf gewijzigd is. Hierdoor kunnen meerdere TreeNodes dezelfde waarde bevatten, en tegelijkertijd geupdate worden.
Ik ben er dus niet helemaal zeker van of ik niet de TreeView als View moet beschouwen, omdat de TreeNode misschien een te laag niveau is. Maar wat is dan de Controller? Of is de TreeView beiden?
En is het ok dat ik het object in een lijst (omdat het om een TreeView gaat) als Model beschouw? Of zou ik veel eerder de lijst zelf als Model moeten zien? Dat lijkt me wel aannemelijk wanneer de TreeView als View beschouwd wordt.
Voor de TreeView is bovenstaand verhaal aannemelijk. Maar wat als je een TextBox in het MVC pattern wilt gieten? Moet je dat dan alleen voor dat betreffende control doen, of geldt het pattern meer voor de complete GUI? Het nadeel hiervan is, net als met dat je de TreeView als View ziet, dat bij een wijziging er veel meer geupdate moet worden dan nodig is.
Op welke punten verschilt het MVC pattern nog (zoals ik hierboven beschreven heb) van het MGM pattern?
offtopic:
Ik heb thuis al wel het GoF boek liggen, maar moet er nog in beginnen...
Ik heb thuis al wel het GoF boek liggen, maar moet er nog in beginnen...
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack