はい、それがベストプラクティスです。コードの後半で、クライアント コードを変更して、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
でプログラムを作成できます