2010-04-26 6 views
5

Le modèle classique de MVP fortement typé ressemble à ceci à Scala:Améliorer MVP à Scala

trait IView { } 

trait Presenter[View <: IView] { // or have it as an abstract type member 
    val view : View 
} 

case class View1(...) extends IView { ... } 

case object Presenter1 extends Presenter[View1] { 
    val view = View1(...) 
} 

Maintenant, je me demande s'il y a une bonne façon d'améliorer ce que je manque ...

+1

Même si un sujet intéressant, ce n'est pas une bonne question SO. Il est extrêmement large et très peu susceptible d'avoir une réponse factuelle et objective. – jpswain

+1

@ orange80 J'ai ajouté une prime au cas où les gens trouveraient une meilleure solution, par exemple comment gérer la dépendance cyclique de View to Presenter. Peut-être aurait-il été préférable d'utiliser wiki communautaire à la place. –

+0

@Mark Jayxcela: Malheureusement, je ne peux pas en faire un wiki communautaire ... –

Répondre

2

Une bonne chose au sujet du modèle MVP est qu'il rend votre unité de code UI testable.

Je vous suggère d'éviter d'instancier la vue dans le présentateur et de la passer au constructeur. Cela vous permettra de simuler le View et tester l'unité Presenter.

vous remplacer le code

case object Presenter1 extends Presenter[View1] { 
    val view = View1(...) 
} 

avec

case object Presenter1(val view: View1) extends Presenter[View1] { 
    ... 
}