Відмова від спадку
Симптоми і ознаки
Якщо підклас використовує лише малу частину успадкованих методів і властивостей суперкласа, це є ознакою неправильної ієрархії. При цьому зайві методи можуть просто не використовуватися або бути перевизначеними і викидати виключення.
Причини появи
Хтось створив наслідування між класами тільки з мотивів повторного використання коду, що знаходиться в суперкласі. При цьому суперклас і підклас можуть бути абсолютно різними сутностями.
Лікування
-
Якщо наслідування не має сенсу, і підклас насправді не є представником суперкласу, слід позбутися від відношення наслідування між цими класами, застосувавши заміну наслідування делегуванням.
-
Якщо наслідування має сенс, треба позбутися від зайвих полів і методів в підкласі. Для цього необхідно витягнути з батьківського класу всі поля і методи, які потрібні підкласу, в новий суперклас, і зробити обидва класи його спадкоємцями (відокремлення суперкласу).
Виграш
- Покращує розуміння і організацію коду. Тепер ви не витрачатимете час на припущення, чому саме клас
Стілець
є підкласом класуТварина
(незважаючи на те, що в обох є чотири ноги).