オブジェクト上の他のコードをチェックインするため、インターフェイスを実装していないと障害が発生する可能性があります。ただし、これはインターフェースの利点でもあります。クラスは、インターフェースを実装するために何かから拡張する必要がないため、任意のクラスから任意に拡張できますが、特定のインターフェースを実装します。つまり、それ以外の機能があります。継承チェーンから取得しました。したがって、Adobe(または誰でも)は次のようにコーディングします。
if(argumentObject is ICellRenderer)
{
var icr:ICellRenderer = argumentObject as ICellRenderer; //cast so code completion can work
icr.data = data; //do some stuff on the object that only an ICellRenderer can do
}
この説明が明確でない場合は、インターフェースとその使用法を理解するのに長い時間がかかりましたが、今では私は大きな支持者になっています。
引数のサポート
継承自体に関する限り、明確にするために、概念は、何かが他のものとまったく同じであるが、それに関連付けられた追加のプロパティ(名詞)またはアクション(動詞)がある場合、共通部分を書き直す必要がないということです。
一般的な例を使用するには、クラスAnimal(isAliveなどのプロパティ、reprecateなどのアクション)があるとします。ここで、SexualAnimalとAsexualAnimalのクラスを作成し、SexualAnimalのreproduceメソッドで引数を取りますが、AsexualAnimalのクラスは引数を取りません(SexualAnimalはreproduceメソッドのオーバーロードバージョンを持ち、デフォルトのスローエラーをオーバーライドします) )。さて、これですべてうまくいきました。Birdsに到達した後、フライトの処理方法を選択できるようになりました。Aは、継承チェーンのどこかにブール値としてフライトを追加するか、Bはフライトのインターフェイスを作成します(おそらく、継承ツリーのどこに動物がいるのかは関係ありません。動物が飛ぶことができるため、高度やtakeFlightなどのアクションなどの特定のプロパティがあることを知りたいだけです。
これを確認する別の方法は、プログラマーとしてインターフェイスを作成して別のチームに渡すことができ、インターフェイスで確立された「契約」に基づいて両方を操作できることです。たとえば、いくつかの操作を行うためにデータベースにアクセスする必要があるが、どのデータベースソリューションが長期的に使用されるかわかりません。したがって、DBがX引数を使用してYデータをフェッチできるようにするために必要なインターフェイスを記述します。これで、Xを指定し、Yを指定することを前提として、残りのコードを自由に記述できます。基礎となる実装は私のコードが機能します。
インターフェイスの使用に関するより正式なリファレンスについては、http://en.wikipedia.org/wiki/Design_Patternsを参照してください。