Autumn SALE

Параллельные иерархии наследования

Также известен как: Parallel Inheritance Hierarchies

Симптомы и признаки

Всякий раз при создании подкласса какого-то класса приходится создавать ещё один подкласс для другого класса.

Причины появления

Пока иерархия была небольшая, всё было хорошо. Но с появлением новых классов вносить изменения становилось всё сложнее и сложнее.

Лечение

  • Вы можете попытаться устранить дублирования паралельных классов в два этапа. Во-первых, нужно заставить экземпляры одной иерархии ссылаться на экземпляры другой иерархии. Затем следует убрать иерархию в ссылающемся классе с помощью перемещения метода и перемещения поля.

Выигрыш

  • Уменьшает дублирования кода.

  • Может улучшить организацию кода.

Не стоит трогать, если...

  • Иногда наличие паралельной иерархии — это необходимое зло, без которого устройство программы было бы еще хуже. Если вы обнаружите, что ваши попытки устранить дублирование приводят к еще большему ухудшению организации кода, то... остановите рефакторинг, откатите все внесенные изменения, выпейте чаю и начните привыкать к этому коду.