Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
重複の可能性: Java クラスのインターフェースを優先する必要があるのはなぜですか?
実装を公開するのはスタイルが悪いという本を読んだので、次のようにします。
良い:Set s = new HashSet( );
Set s = new HashSet( );
公平:HashSet s = new HashSet( );
HashSet s = new HashSet( );
これがなぜなのか説明できますか?
実装ではなく、常にインターフェースに対してプログラミングする必要があります。これにより、疎結合が可能になります。 たとえば、最初のケースでHashSetaTreeSetに置き換えても、コードは影響を受けません。このような変化を 2 番目のケースと比較してください。 したがって、クライアント コードが具象型の代わりにインターフェイスを使用している限り、クライアント コードに影響を与えることなく実装を切り替えることができます。
HashSet
TreeSet