Visão geral
É um padrão estrutural que organiza objetos em uma estrutura de árvore para representar uma hierarquia "parcial-total", tornando o cliente único no uso de objetos individuais e objetos combinados.
Diagrama de classe UML
O diagrama de classe acima contém os papéis:
Componente: Declare uma interface comum para o objeto que participa da composição, seja uma combinação ou um nó foliar.
Folha: representa um objeto de nós da folha na combinação, e o nó foliar não possui nós filhos.
Composto: representa o objeto com objetos infantis que participam da combinação e fornece o comportamento da construção da filial;
Exemplo de código
importar java.util.ArrayList; importar java.util.list; componente de classe abstract {nome da string protegida; componente público (nome da string) {this.name = name; } public abstrate void add (componente c); Remoção de vazio abstrato público (Componente C); public abstrate void getChild (int de profundidade);} classe folha estende o componente {public leaf (nome da string) {super (nome); } @Override public void add (componente c) {System.out.println ("não pode adicionar a uma folha"); } @Override public void remover (componente c) {System.out.println ("não pode remover de uma folha"); } @Override public void getChild (int de profundidade) {string temp = ""; for (int i = 0; i <profundidade; i ++) {temp+= "-"; System.out.println (temp + nome); }}} classe composition estende o componente {private list <componente> crianças = new ArrayList <> (); public composite (nome da string) {super (nome); } @Override public void add (componente c) {Children.add (c); } @Override public void Remover (Componente C) {Children.Remove (C); } @Override public void getChild (int de profundidade) {for (componente c: crianças) {c.getChild (profundidade); }}} classe pública Main {public static void main (string args []) {composto root = new composite ("root"); root.Add (New Leaf ("Leaf A")); root.add (new Leaf ("folha b")); Compósito compX = novo composto ("composto x"); compX.add (new Leaf ("folha xa")); compX.add (New Leaf ("Leaf XB")); root.add (compX); Compósito compXy = novo composto ("composto xy"); compXy.add (New Leaf ("Leaf Xya")); compXy.add (New Leaf ("folha xyb")); compX.add (compXy); root.getChild (3); }}Cenários de aplicação
1. Requer a hierarquia parte-para-alerta do objeto.
2. Se o cliente quiser que o cliente ignore a diferença entre um objeto combinado e um único objeto, o cliente usará todos os objetos na estrutura combinada uniformemente.
O padrão de combinação define uma estrutura de classe composta por objetos foliares e objetos compostos;
Simplificar o cliente;
Isso facilita adicionar ou remover sub-partes.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.