2010-04-26 41 views
5

經典的強類型MVP模式看起來像這樣在斯卡拉:改善MVP斯卡拉

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(...) 
} 

現在,我不知道是否有改善它的任何很好的方式,我很想念......

+1

雖然一個有趣的話題,這不是一個很好的SO問題。這是非常廣泛的,而且不太可能有任何事實,客觀的答案。 – jpswain 2011-09-01 19:35:41

+1

@ orange80我添加了一個賞金以防人們會發現更好的解決方案,比如如何處理View to Presenter循環依賴。不過,使用社區wiki可能會更好。 – 2011-09-01 20:06:57

+0

@Mark Jayxcela:不幸的是,我無法讓它成爲一個社區維基... – 2011-09-02 08:12:33

回答

2

MVP模式的好處在於它使得您的UI代碼單元可以被測試。

我建議你避免在演示者中實例化視圖並將其傳遞給構造函數。 這將允許你只是嘲笑View和單元測試Presenter

替換你的代碼

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

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