0

重複の可能性:
Java クラスのインターフェースを優先する必要があるのはなぜですか?

実装を公開するのはスタイルが悪いという本を読んだので、次のようにします。

良い:Set s = new HashSet( );

公平:HashSet s = new HashSet( );

これがなぜなのか説明できますか?

4

1 に答える 1

0

実装ではなく、常にインターフェースに対してプログラミングする必要があります。これにより、疎結合が可能になります。
たとえば、最初のケースでHashSetaTreeSetに置き換えても、コードは影響を受けません。このような変化を 2 番目のケースと比較してください。
したがって、クライアント コードが具象型の代わりにインターフェイスを使用している限り、クライアント コードに影響を与えることなく実装を切り替えることができます。

于 2012-11-03T20:52:48.360 に答える