在我的web應用程序中,授權用戶至少有4個「facets」:http會話相關數據,持久數據,facebook數據,運行時業務數據。斯卡拉特質/蛋糕模式vs案例分類
我已經決定與案件階級成分去特質,而不是至少有兩個方面的原因:
- 性狀混合會導致名稱衝突
- 我想免費的案例類的好東西像模式匹配和複製方法
我想知道有關此主題的經驗豐富的scalaists意見。它看起來像特質和/或蛋糕模式應該適合這樣的任務,但正如我上面提到的有問題......它顯而易見,不僅我想實現它快速和容易,但也深入瞭解它的使用在未來。
那麼我的決定是否存在任何缺陷和誤解或者是否正確? 相關的代碼如下所示:
case class FacebookUserInfo(name: String, friends: List[Long])
case class HttpUserInfo(sessionId: String, lastInteractionTime: Long, reconnect: Boolean)
case class RuntimeQuizUserInfo(recentScore: Int)
trait UserState {
def db: User
def http: HttpUserInfo
}
case class ConnectingUser(db: User, http: HttpUserInfo) extends UserState
case class DisconnectedUser(db: User, http: HttpUserInfo, facebook: Option[FacebookUserInfo]) extends UserState
case class AuthorizedUser(db: User, http: HttpUserInfo, facebook: FacebookUserInfo,
quiz: RuntimeQuizUserInfo) extends UserState
謝謝你的回答。我目前正在處理案例類(因爲修改使用特徵混合創建的obects也存在問題,我的意思是case類的複製方法的作用,因爲您必須使用反射或爲每個組合隱式定義構造方法的特點)。所以在我的情況下,隱式轉換以匹配特定的接口會很有用。 – 2010-10-10 14:07:13