我正在尝试使用 Cake 模式为 SearchService 创建一个抽象。这是我目前拥有的:
trait SearchServiceComponent{
val searchService:SearchService
trait SearchService{
def searchForSomething(..):List[String]
def updateIndex(..):Boolean
}
}
假设我有一个 DbSearchServiceComponent 和 LuceneSearchServiceComponent 如下:
trait DbSearchServiceComponent extends SearchServiceComponent{
class DbSearchService extends SearchService{
//Initialize the db client
//Implement all the trait methods
}
}
相似地...
trait LuceneSearchServiceComponent extends SearchServiceComponent{
class LuceneSearchService extends SearchService{
//Initialize the lucene client
//Implement all the trait methods
}
}
我对上述代码段的问题是
我已经在服务实现中初始化了 lucene 客户端和 db 客户端的实例。
理想情况下,我想“混合”一个“客户端”基本类型,它可以是 Db 客户端或 Lucene 客户端,但我对如何在此处注入多态客户端类型感到非常困惑。
有人能指出我如何能够重构代码,以便我可以将不同版本的客户端注入到我的 SearchService 特征的实现中吗?