Podczas tworzenia widoku (do którego dostarczany jest model - w przykładzie items
i item
) mam możliwość dostarczenia kontrollerowi od razu modelu. Co sądzicie o tym podejściu?
new Pane { mainPane =>
contents = items.map{ item =>
new Pane { pane =>
val deleteButton = new Button { button =>
onMouseClick = controller.deleteButtonClicked(item, pane, mainPane, event)
}
contents = Seq(new Label(item.name), deleteButton)
}
}
}
Ogólnie pod względem rozdziału kodu jest ok, bo w widoku nie ma żadnej logiki, tylko podpięcie metody kontrolera.
Ma to takie plusy że nie trzeba w widoku przechowywać referencji do modelu ani odwrotnie.
Chcąc np w kontrolerze podczas usuwania item
usunąć też pane
, wystarczy zrobić w metodzie obslugujacej zdarzenie mainPane.children.remove(pane)
, nie znając rozkładu widoku itd.
Jednak pytanie, co np. w sytuacji, gdybyśmy w innym miejscu chcieli usunąć item
i oprócz tego pane
, gdzieś, gdzie nie ma dostępu do tych instancji. Np w dwóch miejscach aplikacji jest usuwanie item
. Co wtedy zrobić?
I jeszcze takie ogólne pytanie, jakąś konkretną architekturę polecacie pod aplikacje okienkowe? MVP? MVVM?