这是一个面向对象的设计问题。我在我的应用程序中使用类型安全的Config。Config接口非常有用,但是我的应用程序配置文件中有一些必填字段。我想做的是创建一个Config的子接口,并添加这两个顶层方法。类似于这样:
trait AppConfig extends Config{
def param1:String
def param2:String
}
然而,如果给定Config的实例创建一个真正的AppConfig似乎不可行。(我不想创建包装对象并复制Config接口上的所有方法)。理想情况下,我正在寻找能够实现类似于此的东西。
val conf:Config = //get config object from somewhere
return conf with AppConfig { overrider def param1 = {"blah"} }
我知道最后一行是无效的。但我正在寻找一个具有相同功能的模式/结构。