0

私はこれを github でよく見かけますが、これらの関係での利点、さらにはインターフェースの使用さえも見落としています。

状況: ライブラリには、Articleabstract と宣言され、拡張されるはずの基本クラスがあります。ArticleInterface基本的に実装する理由は次のとおりです。

interface ArticleInterface
{
     // some getter

     // some setter

     // getter...

     // setter....

     // etc...
}

このセットアップでインターフェイスの使用が見当たりませんか? これらのゲッター/セッターとプロパティが既に定義されているため、抽象クラスだけでは十分ではありません(インターフェースを実装しています)。ここで Interface が行う唯一のことは、そのポイントであるはずのないプロパティ宣言を強制することですよね?

4

1 に答える 1

3

インターフェイスは、クラスをさらに柔軟にします。最終的に、それは実際に定義したいインターフェースです。抽象クラスを使用すると、クラス インターフェイスのいくつかの重要な部分と、実装 (の一部) を定義できます。インターフェイスはさらに抽象的で、必要な機能のインターフェイスのみを定義し、実装は完全に実装者に任せます。

このように考える必要があります。インターフェースは定義であり、抽象クラスは単なる実装例です。このスケルトン実装が目的に適している場合は、それを拡張して使用してください。それ以外の場合、特定のクラスを継承できない、または継承したくない場合は、任意の方法でインターフェイスを実装できます。特定のクラスを拡張する必要はありません。独自のクラス階層を使用できます。

インターフェイスで考える必要がある理由と、デカップリングが重要な理由について詳しくは、この記事をお読みください。

于 2013-01-27T12:10:36.547 に答える