2

在浏览一个项目的代码时,我遇到了一个实现,BinaryHeap其中两个实现(使用 Array 和 Tree)被打包在接口本身中。我发现它有些复杂。代码是:

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
   }
}

这种方法有什么问题吗?在可读性方面如何改进?

4

2 回答 2

1

本身并没有错(即库确实编译:-)),但这绝对是尴尬的。至少,它会强制您在每次要使用该接口时始终导入这两个实现。

我将接口作为独立接口,并声明给其他顶级类以实现。

于 2015-01-03T08:55:20.810 回答
0

正如@Mureinik 所提到的,可以通过以下方式提高代码的可读性,

  1. 独立界面
  2. 将接口内的这些类作为顶级类。

将这些类放在接口中的想法可能出于以下原因:将 BinaryHeapArray 和 BinaryHeapTree 类绑定到 BinaryHeap。湾。另一个原因可能是接口中有可修改的数据(您可能知道接口中的所有字段都是隐式最终的)。通过在接口内声明一个类,您可以拥有通用的 MODIFIABLE 数据。

于 2015-01-05T06:27:14.627 回答