クラスのクライアントがオーバーライドできるようにしたいいくつかの機能を持つ C# クラスがあります。具体的には、次のことを希望します。
- クライアントが何もしない場合、デフォルトの動作が得られます
- クライアントは動作をオーバーライドして、デフォルトの動作が呼び出されないようにすることができます。
- クライアントは動作をオーバーライドして、デフォルトの動作を pre/post/middle 操作として呼び出すことができます。
私の現在の考えは次のとおりです。
- クライアントが動作をオーバーライドしたい場合にサブスクライブするイベントを公開します。
- デフォルトの動作 (イベントのシグネチャと一致する) でメソッドを公開します。
void DefaultBehavior()
イベントを起動しようとするたびに、デリゲートが null の場合は、デフォルトの動作メソッドを呼び出します。それ以外の場合は、イベントのデリゲートを呼び出します。
if (eventDelegate == null) DefaultBehavior(); else eventDelegate();
クライアントが動作をオーバーライドする場合、必要に応じて DefaultBehavior メソッドを呼び出して、目的の動作を取得できます。
このアプローチは、クライアントの観点から十分に直感的だと思いますか? または、より良い代替案を提案できますか?