これは、インターフェースの目的を無効にします。実装が1つしかない場合は、具体的である可能性もあります。
インターフェイスは、複数のクラスによって実装されることを目的としています。これにより、実装の詳細を気にすることなく、実装を切り替えることができます。たとえば、インターフェイスの最も一般的な使用法は、コレクションフレームワーク、特に、、、List
およびSet
ですMap
。
// Hides the implementation details of ArrayList within a List variable
List<String> strs = new ArrayList<String>();
// Hides the implementation details of LinkedList within the same List variable
strs = new LinkedList<String>();
// All code using strs is agnostic to what kind of list it is (mostly)
strs.add("Hello, Dolly");
System.out.println(strs.get(0));
インターフェイスは主に、カプセル化とポリモーフィズムという2つのOOP概念を具体化します。インターフェイスを使用してこれら2つのことのいずれかを実行する予定がない場合は、インターフェイスを使用しないでください。具象(非抽象)クラスを使用するだけです。この時点でインターフェースを使用するのはやり過ぎです。
Proxy
私が考えることができるこの規則の唯一の例外は、Javaのクラスを使用したい場合です。その場合にのみ、1:1のインターフェース:クラス比が受け入れられます。これは、Proxy
インスタンスで実装をラップするためのインターフェースが必要だからです。