多くの小規模なクラスがいくつかのデータをリッスンし、特定のインスタンスでは他のクラスに通知する大きなプロジェクトがあります。だから私はC++リスナー使用時に多重継承を避けるための設計
class Calc {}
class Spotter {}
class Updater {}
....
のようなクラスとそれらに耳を傾け、いくつかの他のクラス
class Listener_1 {}
class Listener_2 {}
を持っており、プロジェクトでは、多くのインターフェイス
class ICalcListener {
virtual void onCalcCall(...) {}
class ISpotterListener {
virtual void on SpotterCall(...) {}
....
になってしまったとリスナーがすべて継承されていませんコールバックを上書きして反応する必要がある場合は、
class Listener_1 : public ICalcListener, public ISpotterListener, ... {
virtual void onCalcCall(...) { doThis(); }
}
デザインが機能しているが、ここでは最大限に自分自身をインタフェースと継承よりも、これに対処するためのより良い方法がある場合、私は疑問に思って。ほとんど私が必要とするのは、コールバックを登録することだけです。
EDIT: 私はラウンドより突っついたととのインターフェイスを使用する代わりに(私はC11を使用しています)を使用しているようにそれはそう 1)デリゲート 2)のstd ::機能 3)ラムダ関数
パフォーマンスは重要ですが、シンプルさも高く評価されている場合、どのような方法が最適ですか?
http://codereview.stackexchange.com/ –
複数のインターフェイスの継承はそれほど悪くありません。それは多くの問題を提起するデータ継承です。 –