【发布时间】:2013-07-21 08:05:58
【问题描述】:
我有一个用 MVC 风格编写的项目。视图如下所示:
trait BaseView {
def asComponent(): Component // each view can be displayed on screen
}
class ConcreteView extends Panel with BaseView {
def asComponent(): Component = this //ConcreteView is itself Component because it extends Panel
}
是否可以更改此代码以使用从ConcreteView 到Component 的隐式转换?所以我可以将ConcreteView 用作Component(由于隐式转换)而不调用ConcreteView#asComponent 方法?
【问题讨论】:
-
你为什么需要这样的方法?
val c: Component = someConcreteView应该已经可以工作了。 -
为了更好地理解什么时候应该和什么时候不应该对适配器模式使用隐式转换,我建议你阅读我的博客文章 - maxondev.com/adapter-design-pattern-scala-implicits