Widok, model, kontroller w aplikacji okienkowej

0

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?

1
ubuntuser napisał(a):

I jeszcze takie ogólne pytanie, jakąś konkretną architekturę polecacie pod aplikacje okienkowe? MVP? MVVM?

Wybór wzorca warstwy prezentacji akurat zależy od technologii. Niby wszystkiego można użyć wszędzie, ale w wielu przypadkach będzie to rozwiązanie na siłę.

0

Dzięki za odpowiedź. Często zapominam, że nie ma uniwersalnych rozwiązań i trzeba czasem zaufać intuicji :P
Ps. A co do problemu opisanego w temacie, to stwierdziłem, że zrobię szereg zdarzeń związanych z modelem (jak np. onItemRemoved) i w widoku się do tego dopiszę i w samym widoku podam kod do usuwania z widoku. Bo bindingi obecne w nowych technologiach, jeszcze usuwania nie obsługują bądź nie wiem jak do tego podejść.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0