2016-07-11 3 views
0

何度も、私は単一クラス(Java)が単一のインターフェースを実装しているのを見たことがあります。そのインタフェースは、単一のクラスに対してのみ使用されます。それを実装する他のクラスはありません。なぜ我々はこれを行うのですか?それは私のように思えます、私たちはインターフェイス、クラスだけを必要としません。なぜAPIと実装があるのですか?

例:https://github.com/essentials/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/I18n.java

+0

私はこのクエストオンについて考える前に、例が必要です。 –

+0

@a_river_in_canada私は1つを追加しました – MCMastery

+1

あなたはただ1つの実装*を持っています* ... *将来の互換性がある人もいます。これが常に最も効率的なアプローチであるかどうかは、議論の余地がありますか... – deceze

答えて

0

は、SECの言語を忘れます。

インターフェイスを使用する理由は数多くあり、インターフェイスを実装するクラスが1つしかない場合は、まったく問題ありません。

あなたがテスト可能なコードを書きたい想像し、あなたはすべての良いものをやりたい、テストを持っているなど

コードを書くための良い方法は、決してハードコードにクラスの依存関係です。依存関係を注入すると、インターフェイスや抽象クラスを介して行われるため、作業が楽になります。だから、基本的にはクラスね、猫の実装だとは言いませんね、ここでは一般的な動物だと言います。

インターフェイスには、契約を提供する1つのジョブがあり、これが使用しているジョブです。したがって、コードを依存関係から切り離しているので、今ではそれをテストすることができ、すべての依存関係を簡単にモックすることができます。あなたが1つ以上の実装を持っているという事実は、何の違いもありません。

+1

"コードを書く良い方法は、決してクラス内の依存関係をハードコードすることではありません。" - 私は、実用的でシンプルなコードを書くことも良いと付け加えたいと思います。いくつかのハードコード化された依存関係は、注入されたインタフェースに依存して、より実用的でよりシンプルです。 – jrahhali

関連する問題