はい、それがベストプラクティスです。コードの後半で、クライアント コードを変更して、LinkedList<String>または変更せずに実装を変更できるためです。CustomListImpl<String>
メソッドを持つサードパーティのライブラリを使用しているとします。
ArrayList<Document> getAllDocuments(){...}
この場合、ライブラリの作成者が に変更ArrayListするとLinkedList、すべてのコードが壊れます (コンパイル エラーが発生します)。
ArrayList<Document> list = getAllDocuments()//compilation error here
ライブラリメソッドがインターフェイスで宣言される場合
List<Document> getAllDocuments(){...}
また、作成者は実装をLinkedListコードに変更して問題なく動作します。例:
List<Document> list = getAllDocuments()//you do not worry here about implementation
したがって、を使用すると、実装レベルではなく抽象化レベルInterfacesでプログラムを作成できます