例: スクリプト オブジェクト (文字列、配列など) またはスクリプト エンジン ( eval() 、readFile() など) 間の互換性レイヤー。
2 に答える
これ以上の文脈がなければ、インターフェースについても言わざるを得ません。関数またはデリゲートを 1 つのメソッドを持つインターフェイスとして表すことができ、抽象クラスは既に実装されている可能性のあるいくつかのメソッドとのインターフェイスに過ぎないことを考慮してください。
とはいえ、それは実際に何を達成しようとしているかによって異なります。インターフェースは、共通のインターフェースを持つが実装が異なる可能性のあるオブジェクトが多数ある場合に役立ちます。たとえば、プラグイン用の非常に単純なコールバック システムを設計している場合 (つまり、プラグインがホスト アプリケーションで特定のイベントをフックできるようにする)、デリゲートはおそらくより単純であり、必要に応じて十分です。
また、インターフェイスを使用する場合は、ホストがインスタンスをインスタンス化するための何らかの方法が必要になる可能性があることに注意してください。これを行う最も簡単な方法は、デリゲートをホストに一意の名前で登録することです。
抽象クラスは、インターフェイスを使用し、いくつかのデフォルトの実装を提供する場合にのみ役立ちます。その場合のより良い解決策は、代わりに実際のインターフェースを用意し、デフォルトの実装を mixin として提供することです。
インターフェイスには私の投票があります。そうすれば、インターフェースを定義する限り、開発者はコードをあまり配布しなくても、かなり簡単に互換性のあるものを書くことができます。