Les conteneurs standards doivent-ils être sous-classés ou hérités ?
Il est courant de rencontrer des questions sur les forums en ligne concernant la pratique du sous-classement ou de l'héritage des normes. conteneurs. Bien que cette approche puisse sembler pratique pour étendre les fonctionnalités des conteneurs, elle soulève des préoccupations qui méritent d'être prises en compte.
Pourquoi le sous-classement des conteneurs standard est déconseillé
-
Manque de ressources virtuelles Destructeurs : Les conteneurs standards ne possèdent pas de destructeurs virtuels. Cela implique que leur utilisation polymorphe peut entraîner des problèmes potentiels de nettoyage dans les classes dérivées.
-
Violation des principes de conception : Le sous-classement des conteneurs sape l'encapsulation et viole le principe fondamental de l'extension des fonctionnalités via des algorithmes applicables de manière générique.
-
Limitations du comportement d'extension : L'héritage ne doit pas être la méthode principale pour étendre le comportement de classe. Cette approche lie les fonctionnalités étendues au contrat d'interface, compliquant les modifications futures.
Une approche plus adaptée
Au lieu de sous-classer les conteneurs standards, envisagez :
-
Algorithmes externes : Implémentez des algorithmes génériques qui fonctionnent sur des conteneurs. Cette approche favorise la flexibilité et réduit la duplication de code.
-
Confinement : Utiliser le confinement dans une classe pour appliquer des invariants spécifiques ou ajouter de nouveaux comportements indépendants du conteneur.
-
Composition : Optez pour la composition plutôt que pour l'héritage chaque fois que cela est possible. Cela offre de la flexibilité et permet l'inclusion d'un plus large éventail de comportements dans les classes dérivées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!