Разумно ли расширять класс только для повторного использования одной функции?

10

Я разрабатываю ряд пост-фильтров для сайта WordPress, и я создал первые 4 с одним классом.

Последние два достаточно различны по объему, чтобы разделить только одну функцию (функцию для создания конечных ссылок) в своих классах.

Разумно ли в данном случае или в любом другом подобном гипотетическом случае расширить исходный класс, чтобы иметь такую ​​функциональность, или есть лучший способ?

Мягкий пух
источник
Я не понимаю этот вопрос. Что вы имеете в виду, строя вещи с классом? Эти классы что-то наследуют? Разве у класса наверху иерархии уже не было бы общей функции?
Дэвид Торнли

Ответы:

19

Нет, если эти два класса настолько различны, что они разделяют только одну функцию, скорее всего, они не являются взаимозаменяемыми - и, следовательно, они нарушат принцип подстановки Лискова .

Производный от базового класса, только если это логично. Совместное использование одного фрагмента кода редко является оправданием для наследования :)

В этом конкретном примере это звучит так, как будто вы хотите повторно использовать эту функцию вместо композиции ...

MattDavey
источник
3
Предпочитаю композицию наследству! В большинстве случаев это сделает вашу жизнь проще в долгосрочной перспективе.
Трэвис
Композиция FTW!
back2dos
Стоит отметить, что мой ответ в основном такой же, как у @Sardathrion, я только что связался с соответствующими принципами :)
MattDavey
7

Если в описании класса есть слово « и », его следует разбить на два (или более) класса. Судя по всему, вы можете сделать эту функцию членом другого класса, на который ссылаются те, которые у вас есть в настоящее время.

Сардатрион - против злоупотребления SE
источник