чи розумна практика розширення класу просто для повторного використання однієї функції?


10

Я розробляю діапазон поштових фільтрів для сайту wordpress, і я створив перші 4 з одного класу.

Останні два досить різні за обсягом, щоб мати спільну функцію (функцію створення кінцевих посилань) лише у своїх класах.

Чи доцільно в цьому випадку або в будь-якій кількості подібних гіпотетичних випадків розширити вихідний клас, щоб мати цю функціональність, чи є кращий спосіб?


Я не розумію цього питання. Що ви маєте на увазі, будуючи речі з класом? Це класи, які від чогось успадковують? Невже клас у верхній частині ієрархії вже не має спільної функції?
Девід Торнлі

Відповіді:


19

Ні, якщо два класи настільки різні, що вони розділяють лише одну функцію, швидше за все, вони не є взаємозамінними - і тому вони порушать принцип заміщення ліскова .

Отримайте лише з базового класу, якщо це логічно зробити. Поділ єдиного фрагмента коду рідко є виправданням спадщини :)

У цьому конкретному прикладі це здається, що ви хочете повторно використовувати цю функцію замість композиції ...


3
Віддавайте перевагу складу над спадщиною! У більшості випадків це з часом спростить вам життя.
Тревіс

Склад FTW!
back2dos

Варто відзначити , що моя відповідь в основному так само , як @Sardathrion, я пов'язаний з принципами Релевент :)
MattDavey

7

Якщо в описі класу є слово " і ", його слід розбити на два (або більше) класи. За зовнішнім виглядом речі ви можете зробити цю функцію членом іншого класу, на який посилаються ті, які у вас є.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.