Contexte
Tout d'abord, comprenons le "partie-tout", ce genre de relation "partie-tout" dans la vraie vie est également très courant. Par exemple: collèges et écoles, succursales et sièges sociaux, livres et bibliothèques, etc.
Dans le développement logiciel, nous devons souvent traiter des objets simples et des objets composites. Nous pouvons utiliser le mode combiné pour traiter des objets uniques et des objets composites de manière cohérente. Le client n'a pas besoin de savoir s'il s'agit d'un objet unique ou d'un objet composite pour être appelé. Cette polyvalence réduit très bien le code client.
L'introduction ci-dessus est-elle plus abstraite? Ne vous inquiétez pas, continuez à regarder en bas.
Quel est le mode combiné
"Composez des objets en arborescences pour représenter des hiérarchies partie-tout.Composite permet aux clients de traiter des objets individuels et des compositions d'objets de manière uniforme. L'utilisation des objets est cohérente.)
"
Le mode de combinaison se compose principalement de 3 éléments:
""
Rôle du composant abstrait (composant): sa fonction principale est de déclarer des interfaces publiques pour les composants feuille et branche et d'implémenter leurs comportements par défaut.
Rôle du composant feuille (feuille): il s'agit d'un objet de nœud feuille dans la composition, il n'a pas de nœud enfant et est utilisé pour implémenter l'interface publique déclarée dans le rôle de composant abstrait.
Le rôle du composant de branche (Composite): c'est l'objet nœud de branche dans la combinaison, et il a des nœuds enfants. Il implémente l'interface déclarée dans le rôle du composant abstrait, et sa fonction principale est de stocker et de gérer des sous-composants, contenant généralement des
Add()、Remove()、GetChild()
méthodes.
Le diagramme de structure du mode combiné est le suivant.
Mode combiné
Code
Composant
Feuille
Composite
Code de test:
Que fait ce code de test? Nous l'utilisons pour parcourir Leaf
le contenu.
traverser
Les résultats des tests sont les suivants:
树叶Lvshen1:被访问!
树叶Lvshen2:被访问!
树叶Lvshen3:被访问!
Penser au mode combiné
En ce qui concerne le code ci-dessus, il Leaf
s'agit d'un objet unique, qui Composite
est un objet composé. Pour le client, ce qu'on appelle, c'est Component
qu'il n'y a pas de différence entre le tout et la pièce. Composite
Il peut se charger à la fois lui-même et Leaf
n'a besoin que d'un ensemble de codes pour être satisfait.
Après avoir utilisé le mode combiné, nous pouvons voir que si nous voulons ajouter un nœud de branche (composite) ou un nœud feuille (feuille), est-ce facile? Il suffit de trouver son nœud parent. Il est très facile de développer et conforme au principe d'ouverture et de fermeture, ce qui est très bénéfique pour la maintenance future.
Alors, quand l'utilisons-nous?
Dans le développement, si nous avons besoin d'afficher des scènes "partie à tout", telles que le menu arborescent, la gestion des fichiers et des dossiers, etc., nous pouvons utiliser le mode combiné.
De plus, si vous avez besoin de développer un système de gestion, cela peut impliquer le développement de relations de rang du personnel. Par exemple, la structure arborescente du directeur général-directeur du service-employé.
Dans le système de distribution du commerce électronique, la relation entre en ligne et hors ligne doit être affichée. Le mode combiné peut également être utilisé.
Recommandé dans le passé
-
Avez-vous peur des fuites de mémoire lors de l'utilisation de ThreadLocal?
-
Résumé de l'entretien back-end Java de 30000 mots (avec PDF)
Scannez le code QR pour devenir plus excitant. Ou recherchez Lvshen_9 sur WeChat , vous pouvez répondre pour obtenir des informations en arrière-plan
回复"java" 获取java电子书;
回复"python"获取python电子书;
回复"算法"获取算法电子书;
回复"大数据"获取大数据电子书;
回复"spring"获取SpringBoot的学习视频。
回复"面试"获取一线大厂面试资料
回复"进阶之路"获取Java进阶之路的思维导图
回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)
回复"总结"获取Java后端面试经验总结PDF版
回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)
回复"并发导图"获取Java并发编程思维导图(xmind终极版)
Un autre: cliquez sur [ Mes avantages ] pour avoir plus de surprises.