Весняний РОЗПРОДАЖ

Відмова від спадку

Також відомий як: Refused Bequest

Симптоми і ознаки

Якщо підклас використовує лише малу частину успадкованих методів і властивостей суперкласа, це є ознакою неправильної ієрархії. При цьому зайві методи можуть просто не використовуватися або бути перевизначеними і викидати виключення.

Причини появи

Хтось створив наслідування між класами тільки з мотивів повторного використання коду, що знаходиться в суперкласі. При цьому суперклас і підклас можуть бути абсолютно різними сутностями.

Лікування

  • Якщо наслідування не має сенсу, і підклас насправді не є представником суперкласу, слід позбутися від відношення наслідування між цими класами, застосувавши заміну наслідування делегуванням.

  • Якщо наслідування має сенс, треба позбутися від зайвих полів і методів в підкласі. Для цього необхідно витягнути з батьківського класу всі поля і методи, які потрібні підкласу, в новий суперклас, і зробити обидва класи його спадкоємцями (відокремлення суперкласу).

Виграш

  • Покращує розуміння і організацію коду. Тепер ви не витрачатимете час на припущення, чому саме клас Стілець є підкласом класу Тварина (незважаючи на те, що в обох є чотири ноги).