在Java
我通常会将我的整个域声明为interface
s,可能有一些Factory
让我实现.这部分是因为我太老了我记得当一些持久层需要实现类来子类化特定类时,我也可以轻松地:
用于测试目的的模拟对象
必要时在运行时代理对象
提供不同的实现
即使我没有真正想到我真的想要做上述任何一项,我也会遵循这种做法; 为了以防万一,我仍然认为这是一种很好的做法.我认为这是一种相当常见的方法.
如果我声明所有域对象,这在Scala-land中会不常见abstract
吗?对于Scala,以上几点也适用吗?
Scala具有特征,它们是破解界面.实际上,它们应该是接口应该是什么,不可否认,在构造函数方面存在局限性,但考虑到如果你有两个接口都有构造函数的要求你会遇到这个问题,这并不是什么大问题.同样的问题.
然后有部分方法,并且在很多方面,许多基于依赖管理的良好面向对象设计原则几乎可以被视为获得更可组合的工作单元的方式,你真的不得不怀疑.而不仅仅是能够处理方法输入和输出,或者使用策略对象/方法的预定义点,您可以更灵活.
添加到那个伴侣对象和所有突然的工厂和更多变得更加微不足道.
鉴于这种情况,你真的可以摆脱不得不在任何地方使用接口,并且使用更强大的泛型系统,接口完成的一些功能会被吸引到那里.
通常看Scala代码它往往会被分解,并且接口似乎不是主要的工具.