Обзор темы [Рефакторинг кода]

Извлечение подкласса (Extract Subclass)

У класса есть особенности, используемые только отдельными экземплярами.

Создать подкласс для этих отдельных экземпляров.

Альтернатива этому рефакторингу – Извлечение класса. Здесь делается выбор между делегированием и наследованием. Применение наследования проще в реализации, но имеет ограничения. Дело в том, что при делегировании можно менять объекты, на которые происходит ссылка, тем самым достигается гибкость в поведении рассматриваемого объекта. При наследовании поведение зашивается жестко.