多くの Microsoft .NET クラスで、次のような非抽象/仮想パブリック メソッドがしばしば存在することに気付きました。
public bool MyAwesomeMethod(object someParameter);
そして、次のような保護された抽象/仮想メソッド
protected virtual bool OnMyAwesomeMethod(object someParameter);
私は最近、これが既知の設計パターンであるかどうか、およびそのような設計の長所と短所は何かと考え始めました。クラスの子が防止できないロジック (ロギングなど) を基本クラスが実行できるようにすることがすべてですか? 子クラスでオーバーライド可能にしたいことがわかっているメソッドに対して、デフォルトでこのソート設計を使用することは、何らかの理由で望ましくありませんか? 私が取り上げていない他の考慮事項はありますか?
よろしくお願いします。