Padrão de design composto

O padrão de design composto é um modelo importante na API Swing, que permite a delegação automática da exibição da exibição de componentes do gráfico para os componentes em si. De fato, cada componente gráfico de balanço (por exemplo, JButton) herda a classe abstrata JComponent que possui um conjunto de métodos que gerenciam a exibição básica e o comportamento de todos os componentes gráficos. No entanto, a própria classe abstrata jcomponente herda a classe de contêineres, que gerencia o aninhamento de componentes gráficos entre eles, por exemplo, um jButton dentro de um jpanel, que é dentro. Um JFrame. Assim, cada interface gráfica de swing corresponde a uma árvore (ou N-Aire Tree) do JComponent. Onde a “magia” do padrão de design composto entra em jogo é, por exemplo, ao redimensionar um JFrame. Neste momento, os componentes gráficos, através de uma descida na árvore, são manipulados sucessivamente via métodos genéricos. Assim, uma modificação para um componente na árvore, causa a modificação aos componentes do “ramo”. Assim, o padrão de design composto é, portanto, consiste na definição de uma classe abstrata com operações. Genéricos para um grupo de objetos e que permite a delegação de operação aos objetos em conexão em cascata. O compósito é semelhante a outro padrão de design, a cadeia de responsabilidade. A imagem abaixo mostra o diagrama UML do padrão de design.

modelo UML do padrão de design composto

Aqui está o código Java genérico para implementar esses componentes:

interface componente

 Interface de componente público {operação pública void ();} 

Observe que a interface pode ser substituída por uma classe abstrata se houver comportamentos comuns a todos os tipos de objetos que desejam ser implementados

classe composta

para representam os nós que podem ter componente sub-hierarquicamente.

 Classe pública Componente implementa componente {Protected Arraylist < componente > componentes = nova arraylist < componente > (); @ Operação de void pública () {// para completar} Adicionar (componente c) {componentes.add (c); } Remoção de void pública (componente C) {componentes.remove (c); } Arraylist público < componente > getComponents () {componentes de retorno; }} 

folha de classe ou folha

para representar folhas ou nós que não podem ter componente sub-hierarquicamente.

 Operação de implementos de composição de classe pública {@OverRide Public Void Operation () {// para ser concluído}} 

Exemplo do padrão com um IHM

Suponha uma interface gráfica para controlar uma máquina industrial. Dependendo do status da máquina, alguns comandos são acessíveis mais não são. Esses estados podem ser representados de maneira “surpreendente” e providencial (por exemplo, obviamente!) Por um gráfico acíclico (Breve uma árvore N-Aire). Portanto, usaremos o padrão de design composto para gerenciar o acesso ao painel de controle, chamando o método setenable. Aqui está uma visão geral desta interface gráfica:

exercisecomposite

Leave a comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *