Je développe une gamme de filtres post pour un site wordpress, et j'ai construit les 4 premiers avec une seule classe.
Les deux derniers ont une portée suffisamment différente pour ne partager qu'une seule fonction (la fonction de production des liens finaux) dans leurs classes.
Est-il raisonnable, dans ce cas ou dans un certain nombre de cas hypothétiques similaires, d'étendre la classe d'origine afin d'avoir cette fonctionnalité, ou existe-t-il un meilleur moyen?
object-oriented
class-design
Doux Fuzz
la source
la source
Réponses:
Non, si les deux classes sont si différentes qu'elles ne partagent qu'une seule fonction, il y a de fortes chances qu'elles ne soient pas interchangeables - et donc elles briseraient le principe de la sous- station liskov .
Dériver d'une classe de base uniquement s'il est logique de le faire. Le partage d'un seul morceau de code est rarement une justification de l'héritage :)
Dans cet exemple particulier, il semble que vous souhaitiez réutiliser cette fonction via la composition à la place ...
la source
Si une description de classe contient le mot « et », elle doit être divisée en deux (ou plus) classes. À première vue, vous pourriez faire de cette fonction un membre d'une autre classe référencée par celles que vous avez actuellement.
la source