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


10

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

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

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


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

Ответы:


19

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

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

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


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

Композиция FTW!
back2dos

Стоит отметить, что мой ответ в основном такой же, как у @Sardathrion, я только что связался с соответствующими принципами :)
MattDavey

7

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.