Хороший вопрос. Шаблон действителен, и я часто его использую. Я также согласен с тем, что WalkInternal
не является идеальным именем.
В этом примере я считаю, что вы неправильно формулируете проблему.
Вместо того, чтобы переименовывать «внутренний» метод, посмотрите на ваш «внешний» публичный метод. Он называется Walk
, но у него есть фрагменты кода (//do something before walking
и //do something after walking
), которые ясно показывают, что он содержит больше, чем просто логику для «ходьбы». Возможно, этот метод должен называться Exercise
или GoToTheShops
- или любое другое творческое имя, которое вы можете придумать, которое описывает то, что вы делаете. Каким бы ни был метод, это определенно расширенный набор «Ходьбы» + некоторые другие действия до / после прогулки.
В похожем примере, который я недавно разработал, был открытый метод Complete
и виртуальный Save
, так что
- Каждый класс, необходимый для завершения,
- Различные реализации будут иметь свой собственный метод «Сохранить»
- «Complete» также выполнит некоторую проверку, уведомление и т. Д.
Таким образом, абстрактный метод должен называться Walk
, и вместо этого вы должны переименовать ваш публичный метод во что-то, что более точно описывает процесс «что-то сделать / пройти / сделать что-то».
edit: Если класс Walk
не добавляет какого-либо значительного значения или логики к классу WalkInternal
, я бы спросил, требуется ли это. Если он добавляет логику, его следует переименовать, чтобы отразить его новую функцию.