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

これに対して技術的な理由はありませんが、これがわかりやすいコードになるかどうかはわかりません。プログラマーは通常、インターフェースが実装されていることを期待しますが、あなたの提案には当てはまりません。

この方法では、ソース ファイルの数は少なくなる可能性がありますがInterfaceGroup、入れ子になった型の両方とすべてが別のクラス ファイルにコンパイルされるため、クラス ファイルの数は多くなることに注意してください。

于 2013-05-29T16:07:35.057 に答える
0

それもあると思いTimeUnitましたが、それらは列挙型です。なぜそれができるのかを説明できるこの投稿を見つけました。

于 2013-05-29T12:58:21.310 に答える