Modello di Progettazione Composito è un modello di progettazione che rientra nella categoria dei modelli strutturali. Tali modelli riguardano il modo in cui le classi e gli oggetti sono composti per formare strutture più grandi. Il modello composito descrive uno di questi modi di costruire una gerarchia di classi composta da classi per due diversi tipi di oggetti (composito e primitivo). Un obiettivo dell’ingegneria del software è mantenere un’elevata coesione tra i moduli e l’altro ridurre l’accoppiamento.
Molte applicazioni che hanno a che fare con dati gerarchici devono assicurarsi di non avere troppa dipendenza tra le loro classi perché tali applicazioni devono costantemente aggiornare i loro componenti. Un file system è un classico esempio di struttura gerarchica che contiene cartelle all’interno di cartelle e file all’interno di cartelle. Un file può essere un video, un documento di testo, un file audio. Quindi, ci possono essere più file audio in una cartella e più file video in altri ed entrambi questi possono essere all’interno di un’altra cartella che rappresenta “media” che può essere in un’altra cartella chiamata “lezioni”. La cartella Lezione può anche contenere un’altra cartella che rappresenta argomento, e questo può andare avanti per sempre. Il punto che stiamo cercando di fare è che se stai cercando di progettare un’applicazione del genere che si occupa di componenti gerarchici, potresti finire per creare strutture di classe altamente accoppiate e per aggiungere più componenti potrebbe verificarsi molta ridondanza. Per risolvere questo problema comune, il modello di progettazione composito fornisce una soluzione elegante. Prima di tutto, vediamo cosa è il modello di progettazione composito? (Java Development Company)
Composite design pattern fornisce una gerarchia di progettazione, in cui i nodi con figli differiscono dai nodi senza figli. In questo caso puoi pensare alla struttura dei dati ad albero. E rispetto al nostro esempio, un nodo può essere una cartella e i bambini potrebbero essere file o cartelle composte da file. Un gruppo di oggetti viene trattato allo stesso modo di una singola istanza dello stesso tipo di quell’oggetto, quindi non importa quale, penseremo al nodo e ai suoi figli come al componente della cartella, questo ci rende più facile progettare la nostra struttura gerarchica di componenti per la nostra applicazione. Ci riferiremo a componenti (oggetti) all’interno di componenti (oggetti) come composizioni. Il modello di progettazione composito consente al cliente di trattare in modo uniforme singoli oggetti e composizioni. La cosa fondamentale da tenere a mente è la struttura ad albero, mentre si tratta di questo modello di progettazione. Per capire cosa è il modello di progettazione composito e la sua applicabilità migliore, facciamo uso di un esempio di codice in java che è simile all’esempio di file system che abbiamo dato.
Leggi: “Tutto quello che devi sapere sul modello di progettazione del metodo template”
Esempio di modello di progettazione composito
L’esempio che useremo sarà di un corso composto da argomenti e lezioni. Se stai seguendo un corso su qualsiasi argomento, ci sarà un argomento e quell’argomento può consistere in molti argomenti e lezioni. Quindi, come sarebbe implementato? Vi mostreremo prima l’approccio comune.
ci consentono di creare una Conferenza di Classe
la figura: modello di progettazione composito esempio in java — Conferenza di Classe
La Lezione ha un nome e un metodo di visualizzazione per visualizzare la gerarchia di esso.
Classe Argomento
la figura: modello di progettazione composito esempio in java — Classe Argomento
Nel nostro esempio, l’argomento di classe ha le caratteristiche di aggiunta di un argomento, l’aggiunta di una lezione e visualizzare le lezioni e gli argomenti in una gerarchia. Topic lega altri argomenti e lezioni al suo interno. Quindi, possiamo avere argomenti secondari e lezioni su ciascuno.
Vediamo come combiniamo questi nel metodo principale
Articolo completo: https://www.decipherzone.com/blog-detail/when-use-composite-design-pattern-java