たとえば、スクリプトオブジェクト(文字列、配列など)またはスクリプトエンジン(eval()、readFile()など)間の互換性レイヤー。抽象化(互換)レイヤーを作成する際に、ファンクタ、インターフェイス、または抽象メソッドを使用する必要がありますか?
答えて
これ以上のコンテキストがなければ、私はインターフェイスも言わなければならないでしょう。関数またはデリゲートを単一のメソッドでインターフェイスとして表現することができ、抽象クラスは単に潜在的に既に実装されているいくつかのメソッドとのインターフェイスであると考えてください。
つまり、実際に達成しようとしていることに依存しています。インターフェースは、共通のインターフェースを持つオブジェクトがたくさんありますが、実装が異なる可能性があります。たとえば、プラグイン用の非常にシンプルなコールバックシステムを設計している場合(つまり、プラグインをホストアプリケーションの特定のイベントにフックさせる場合)、代理人はおそらくあなたのニーズに合わせてより簡単で十分です。
また、インタフェースを使用する場合は、ホストがインスタンスをインスタンス化するための方法が必要になることがあります。これを行う最も簡単な方法は、一意の名前でホストに代理人を登録することです。
抽象クラスは、インターフェイスを使用していくつかのデフォルト実装を提供する場合にのみ便利です。その場合のよりよい解決策は、代わりに実際のインターフェースを用意し、デフォルトの実装をmixinとして提供することです。
私は同意します。私はインターフェイスに行きます。 – zaphnat
インターフェイスに私の投票があります。そうすれば、インタフェースを定義する限り、開発者はあまりにも多くのコードを配布しなくても、かなり簡単に互換性のあるものを書くことができます。
- 1. クラスは抽象宣言または抽象メソッドを実装する必要があります
- 2. 抽象クラス用のインタフェースを作成する必要がありますか?
- 3. 抽象メソッドを使用したインターフェイス
- 4. プロパティを初期化するか抽象化する必要があります
- 5. "継承された抽象メソッドを実装する必要があります"
- 6. アイテムの抽象クラスを作成する必要があります
- 7. 契約で抽象メソッドを定義する必要がありますか?
- 8. Javaで抽象クラスと抽象メソッドを使用する理由
- 9. 「レディスキャッシュに保存する」抽象化はどのように作成する必要がありますか?
- 10. PHPで抽象メソッドなしで抽象クラスを作成できますか?
- 11. メソッドはオーバーライドする必要がありますが、抽象メソッドではありませんか?
- 12. アダプタパターンを実装する際にコンフィグレーションを抽象化する必要がありますか?
- 13. 抽象クラスまたはインターフェイスを使用する場合
- 14. 抽象クラスの必要性はここにありますか?
- 15. API抽象化レイヤー - APIインターフェイスの混合を避ける
- 16. 非抽象クラスを抽象クラスで非抽象メソッドに値を代入する
- 17. 抽象クラスと抽象メソッド
- 18. Angularでは、「ドメインコマンド」機能(抽象度が低い)またはGUIアクション処理関数(より抽象化)にバインドする必要がありますか?
- 19. クラス 'MainActivity'は抽象宣言するか、または 'OnClickListener'の抽象メソッド 'onClick(View)'を実装する必要があります。
- 20. 階層タグにはどのようなユーザーレベルの抽象化を使用する必要がありますか?
- 21. は、私はMagentoの抽象ブロックをオーバーライドする必要が抽象ブロック
- 22. C#で抽象変数と非抽象メソッドを持つスーパークラスを作成する
- 23. サブクラスで指定する必要があるデータに抽象メソッドまたはインスタンス変数を使用する必要がありますか?
- 24. デザインパターン:C++抽象レイヤー
- 25. 抽象クラスには最終的なメソッドがありますか?
- 26. コンストラクタで抽象化を使用する
- 27. 継承、カプセル化、抽象化をJsで使用する必要があります
- 28. 抽象クラスメンバを作成するには?
- 29. php oopインターフェイスまたは抽象クラス
- 30. Javaでは、インターフェイスで抽象メソッドを使用するのはいつですか?
Dの代理人は同じ役割を果たすので、それは価値があるため、ファンクタは無意味です。 – FeepingCreature