最初の話とずれてますね…

親
public void ClickSaveButton() {
 入力チェック()
 データ保存()
 ログ出力() 
}
abstract void 入力チェック()
abstract void データ保存()
private void ログ出力() //共通処理

いい子
セーブボタン_Click {
 ClickSaveButton()
}

だめな子

セーブボタン_Click {
 データ保存()
}

セーブボタン_Click {
 入力チェック()
 データ保存()
}