在我的Web应用程序中,授权用户至少具有4个“方面”:http会话相关数据、持久数据、Facebook数据和运行时业务数据。
我决定使用案例类组合而不是特质,原因至少有两个:
那么,我的决定是否有任何缺陷或误解,还是正确的?
相关代码如下:
我决定使用案例类组合而不是特质,原因至少有两个:
- 特质混合可能会导致名称冲突
- 我想要免费的案例类好处,如模式匹配和复制方法
那么,我的决定是否有任何缺陷或误解,还是正确的?
相关代码如下:
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