Friend spotlight!
Whimsical Animations course
Friend spotlight!
NEW Whimsical Animations course
Friend spotlight! NEW Whimsical Animations course
huge discount only this week
Friend spotlight! Want to make your project stand out? NEW Whimsical Animations course huge discount only this week

Спуск метода

Также известен как: Push Down Method

Проблема

Поведение, реализованное в суперклассе, используется только одним или несколькими подклассами.

Решение

Переместите это поведение в подклассы.

До
Push Down Method - Before
После
Push Down Method - After

Причины рефакторинга

Метод, который планировали сделать универсальным для всех классов, по факту используется только в одном подклассе. Такая ситуация может возникнуть, когда планируемые фичи так и не были реализованы.

Кроме того, такая ситуация может возникнуть после извлечения (или удаления) части функциональности из иерархии классов, после которого метод остался используемым только в одном подклассе.

Если вы видите, что метод необходим более чем одному подклассу (но не всем), возможно, стоит создать промежуточный подкласс и переместить метод в него. Это позволит избежать дублирования кода, которое возникло бы при спуске метода во все подклассы.

Достоинства

  • Улучшает связность внутри классов. Метод находится там, где вы ожидаете его увидеть.

Порядок рефакторинга

  1. Объявите метод в подклассе и скопируйте его код из суперкласса.

  2. Удалите метод из суперкласса.

  3. Найдите все места, где используется метод, и убедитесь, что он вызывается из нужного подкласса.