在浏览项目代码时,我遇到了一个BinaryHeap
的实现,其中两个实现(使用数组和树)被打包在接口本身中。我觉得有点复杂。代码为:
public interface BinaryHeap<T extends Comparable<T>> extends IHeap<T> {
//some variables and other declarations.
public static class BinaryHeapArray<T extends Comparable<T>> implements BinaryHeap<T> {
//Implementation based on Array
}
public static class BinaryHeapTree<T extends Comparable<T>> implements BinaryHeap<T> {
//Implementation based on Tree
}
}
这种方法有什么问题吗?如何在可读性方面提高它?
这本身并没有错(即,库确实编译了:-)),但这绝对是尴尬的。至少,它迫使您在每次要使用接口时始终导入这两个实现。
我将接口作为独立接口,并向实现的其他顶级类声明。
正如@Mureinik所提到的,代码的可读性可以通过具有以下方法提高:
- 独立接口
- 将这些类作为顶级类放在接口中。
接口中包含这些类的想法可能出于以下原因:a. 将 BinaryHeapArray 和 BinaryHeapTree 类强绑定到 BinaryHeap。b.另一个原因可能是在接口中包含可修改的数据(您可能知道接口中的所有字段都是隐式最终的)。通过在接口中声明一个类,您可以拥有通用的可修改数据。