0

現在、デフォルトの実装で抽象クラスを使用する API を開発しています。過去にこれを行ったことがありますが、派生クラスで base.SomeMethod() にコールバックすることの哲学的な意味についてはあまり考えていませんでした。これは、API が一般に公開されることを意図していなかったためです。この API は一般に公開されることを意図しているため、基本クラスへの呼び出しをどのように処理すればよいか疑問に思っています。派生実装では常にベース コールが最初または最後に発生すると想定して、実装者のためにその仮定を文書化するだけでよろしいですか? または、基本クラスの呼び出しに副作用がないようにする必要があるため、実装者が基本クラスをいつ呼び出すかは問題ではありませんか? これには経験則がありますか?

ありがとう。

4

1 に答える 1

0

私見それはあなたの特定のクラスのニーズにかなり依存します。基本動作が呼び出されることを確認したい場合(そしておそらく特別な順序でさえ)、テンプレートメソッドを使用できます。このパターンは、制御された方法でサブクラス拡張ポイントを提供する非常にエレガントな方法であり、開発者にコメントを残すよりも優れていると思います。

明らかな欠点は、フックを適切に選択しないと、他の開発者を過度に制約する可能性があることです。フックが必要な動作を実行できなかったため、テンプレートメソッドをオーバーライドする必要があったことを1〜2回覚えています。

HTH

于 2012-12-26T14:00:57.930 に答える