在我的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