观看完Martin关于Reflection and Compilers的主题演讲后,我似乎无法将这个疯狂的问题排除在脑海之外。马丁谈到了“(Wedding) Cake Pattern”等内容,其中特质起着核心作用。我想知道,既然我们已经有了特质,为什么还需要包?是否有任何一个
我不是在谈论当前的实现,我只是试图想象如果我们用特质替换包会是什么样子。在我的想象中,它会是这样的:
- 减少一个关键字(
package
可以做到的事情,trait
(至少在理论上)不能做到?我不是在谈论当前的实现,我只是试图想象如果我们用特质替换包会是什么样子。在我的想象中,它会是这样的:
- 减少一个关键字(
package
是不必要的)
- 不需要package object
总结一下我的所有问题:
- 理论上是否可能从语言中删除包并改用特征?
- 这种改变会带来哪些其他好处?(我在考虑一流包和一流导入,但混合组合是编译时的事情,尽管超级调用是动态绑定的)
- Java/JVM兼容性是唯一的障碍吗?
更新
Daniel Spiewak在此主题演讲中谈到依赖注入只是使用Cake Pattern可以做的所有事情的冰山一角。