我正在构建具有惊人数量抽象的ubercool应用程序。 现在我要设计过度设计的EntityGetService。选项和未来
我想的第一件事是很多抽象类,让说,这样的事情:这里
trait EntityGetService[ID, ENTITY, CONTAINER] {
def get(id: ID): CONTAINER
}
容器的东西,包含(或不包含)键入所需的实体。与选项[ENTITY]非常相似。但是我想要的第二件事,那就是CONTAINER也可以成为未来[ENTITY]。
所以我真的想写特点是这样的:
trait EntityGetService[ID, ENTITY, CONTAINER <: Wrapper[ENTITY]] {
def get(id: ID): CONTAINER
}
,在这种方式指定它:
trait EntitySyncGetService[Long, Entity, Option[Entity]] {
def get(id: Long): Option[Entity]
}
trait EntityAsyncGetService[Long, Entity, Future[Entity]] {
def get(id: Long): Future[Entity]
}
有没有办法做到这一点,而无需重新延长或混合的东西期权和未来?
它看起来像期权和未来有一点共同的(他们两个集装箱)。这与单子有关吗?
还是这只是一个我的失眠的产品?
看起来像这是我正在寻找。你能指出一些资源来阅读这个功能吗?快速的谷歌搜索没有显示任何有用的信息。 –