包括接口实现中的接口正确方法



在浏览项目代码时,我遇到了一个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所提到的,代码的可读性可以通过具有以下方法提高:

  1. 独立接口
  2. 将这些类作为顶级类放在接口中。

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

最新更新