3

我有几个接口都只有一个方法,它们都非常相似。我知道它有效,但我应该还是不应该像这样对它们进行分组:

public class InterfaceGroup {
    public interface Type1 {
        public void method(int a);
    }
    public interface Type2 {
        public void method(String s);
    }
    public interface Type3 {
        public void method();
    }
}

然后在外部将它们引用为InterfaceGroup.Type1.

4

3 回答 3

6

是的,有这样的设计有时会有所帮助。例如,它是Map.EntryJava 标准库中的选择。

但是,这种设计的缺陷在于您定义了一个不扮演类型角色的类型,并且实际上永远都不适合实现它。如果我发现在一个库中我使用这种类型的存在只是为了减少源代码文件的数量,我至少会有点恼火:-) 另一方面,当我在编写代码时其可见性范围仅在实现范围内,我无情地使用这些技巧。

于 2013-05-29T12:55:05.777 回答
0

我想TimeUnit也有,但它们是枚举,我发现这篇文章也许可以解释为什么可以这样做。

于 2013-05-29T12:58:21.310 回答
0

没有技术上的理由反对这一点,但我不确定这是否有助于理解代码。程序员通常会期望实现一个接口,但在您的提议中并非如此。

请注意,这种方式源文件的数量可能会更少,但类文件的数量会更大,因为两者InterfaceGroup及其所有嵌套类型都将编译为单独的类文件。

于 2013-05-29T16:07:35.057 回答