mar*_*hin 23 java static java-8
当我需要一堆无状态实用程序方法时,Java 8中的最佳实践是什么.是不是有将一个接口不会被任何人,即实现public interface Signatures
和public interface Environments
,或者是更好的做旧的方式-有public final class Signatures
和public final class Environments
私人构造|| 枚举?
Stu*_*rks 28
接口的主要目的是提供该类型的操作(方法)的类型和词汇表.它们是有用且灵活的,因为它们允许多个实现,实际上它们被设计为允许在类层次结构中不相关的实现.
问题是,
拥有一个不会被任何人实现的界面是正确的吗?
在我看来,这样可以减少对接口的影响.人们必须环顾API以确定没有实现此接口的类,并且没有此接口的生产者或使用者.有人可能会感到困惑,并试图创建一个接口的实现,但当然他们不会走得太远.虽然可以使用所有静态方法的"实用程序接口",但这并不像旧的不可构造的最终类成语那样清晰.后者的优点是类可以强制执行不能创建任何实例.
如果你看一下新的Java 8 API,你会发现尽管能够在接口上添加静态方法,仍然会使用最终的类习惯用法.
接口上的静态方法已经用于诸如工厂方法之类的东西来创建那些接口的实例,或者用于对这些接口的所有实例具有普遍适用性的实用方法.例如,请参阅Stream
和中的Collector
接口java.util.stream
.每个人都有静态工厂:Stream.of()
,Stream.empty()
,和Collector.of()
.
但另请注意,每个都有伴随实用程序类StreamSupport
和Collectors
.这些是纯实用程序类,仅包含静态方法.可以说它们可以合并到相应的接口中,但这会使接口混乱,并且会模糊类中包含的方法的关系.例如,StreamSupport
包含一系列相关的静态方法,它们都是Spliterator
和之间的所有适配器Stream
.合并这些Stream
可能会让事情变得混乱.
归档时间: |
|
查看次数: |
4040 次 |
最近记录: |