O que é classe de adaptador em Java? Vantagens da classe de adaptadores e seus tipos

Publicados: 2021-05-19

Índice

O que é uma classe de adaptador?

Em JAVA, uma classe de adaptador permite a implementação padrão de interfaces de ouvinte. A noção de interfaces de ouvinte deriva do Modelo de Evento de Delegação. É uma das muitas técnicas usadas para manipular eventos em linguagens de programação de interface gráfica de usuário (GUI), como JAVA.

A programação da GUI é predominantemente orientada a eventos, com o usuário interagindo com o sistema por meio de recursos visuais e gráficos associados. Isso significa que toda atividade iniciada pelo usuário, como o movimento de um mouse que altera as coordenadas do ponteiro do mouse na tela, clica em um botão ou rola uma página, é considerada um evento independente.

Cada uma dessas atividades de eventos independentes está intrinsecamente vinculada a um segmento de código que itera qual resposta o aplicativo deve fornecer ao usuário. O caminho é simples. O usuário (fonte) gera um evento e o envia para uma ou mais interfaces ouvintes. Uma vez que um potencial de evento é recebido, a interface do ouvinte processa o evento e retorna a resposta adequada.

Este caminho substancia o processo de manipulação de eventos. Uma classe de adaptador em JAVA é, portanto, usada para implementar uma interface com um conjunto de métodos fictícios. Se um programador optar por herdar uma classe de adaptador, ele não será forçado a implementar todos os métodos listados em uma interface de ouvinte específica. A classe do adaptador pode ainda ser subclassificada para que o programador possa substituir apenas os métodos necessários. Em outras palavras, usando uma classe de adaptador, o programador pode construir rapidamente sua própria interface de ouvinte para eventos de campo. Isso ajuda a economizar código.

Qual é a relação entre uma classe de adaptador e uma interface de ouvinte?

Os ouvintes são usados ​​quando o programador pretende utilizar a maioria dos métodos listados na interface. Se uma interface de ouvinte for implementada diretamente por uma classe, todos os métodos dessa interface precisam ser implementados, tornando o código excessivamente grande. Essa complexidade pode ser resolvida chamando uma classe de adaptador. Uma classe de adaptador é essencial em instâncias em que um evento chama apenas métodos específicos.

O programador precisa apenas criar uma subclasse dela e substituir os métodos de interesse para usar uma classe adaptadora. As classes de adaptador são, portanto, benéficas para interfaces de ouvinte em JAVA com mais de um método. Para entender melhor, vamos considerar o exemplo da interface MouseListener. Esta interface é notificada sempre que há uma mudança no estado do mouse. Ele tem cinco métodos, mouse clicado, mouseExited, mouseEntered, mousePressed e mouseReleased.

Quando notificado contra um evento, mesmo que apenas esses métodos sejam necessários, todos eles precisam ser implementados. Os métodos que não são necessários são mantidos vazios. Uma classe de adaptador é usada para evitar essa implementação desnecessária de um corpo de método vazio.

Entendendo o padrão de design do adaptador

Em linguagem não técnica, um adaptador, por definição, é estruturalmente projetado para permitir que duas interfaces incompatíveis funcionem juntas. Um padrão de adaptador é, portanto, capaz de tornar compatíveis duas interfaces incompatíveis sem alterar o código existente. As interfaces correspondentes podem ser inconsistentes, mas suas funcionalidades internas devem corresponder ao requisito procurado. Para melhor esclarecer isso, vamos considerar um exemplo relevante.

Estamos cientes de que diferentes países têm tomadas elétricas, voltagens e medições de frequência diferentes. Se tivermos que usar um aparelho projetado de acordo com a especificação de um país em outro, precisamos garantir que o aparelho seja compatível.

Por exemplo, no Reino Unido, os soquetes tipo G são comumente usados, nos EUA e no Japão, soquetes tipo A e tipo B, e na Índia, tipo C, tipo D e tipo M. Um laptop ou dispositivo móvel transportado da Índia portanto, ser incompatível com as especificações elétricas de, digamos, EUA e Japão. É aqui que a finalidade de um adaptador se torna essencial para converter um código incompatível em um código compatível.

Tipos de Classes de Adaptadores

As classes do adaptador podem ser encontradas em java. pacotes awt.the event, java.awt.dnd e java.swing.event. As classes de adaptador padrão com suas interfaces de listener correspondentes em JAVA são mencionadas abaixo para cada um desses pacotes.

1. java. awt. véspera

Classe do Adaptador Interface do Ouvinte
Adaptador de janela WindowListener
KeyAdapter KeyListener
Adaptador de Mouse MouseListener
MouseMotionAdapter MouseMotionListener
Adaptador Focus FocusListener
ComponentAdapter ComponentListener
ContainerAdapter ContainerListener
Adaptador HierarchyBounds HierarchyBoundsListener

2. java.awt.dnd

Classe do Adaptador Interface do Ouvinte
DragSourceAdapter DragSourceListener
DragTargetAdapter DragTargetListener

3. javax.swing.event

Classe do Adaptador Interface do Ouvinte
Adaptador MouseInput MouseInputListener
InternalFrameAdapter InternalFrameListener

Estes estão presentes no Abstract Window Toolkit de seus respectivos pacotes Java. Para entender a natureza dos métodos contidos nas interfaces do listener, vamos considerar alguns exemplos:

  1. A interface WindowListener define métodos relacionados a eventos de janela, incluindo abertura e fechamento de uma janela, ativação e desativação de uma janela e a iconificação e desintoxicação de uma janela.
  2. A interface KeyListener define métodos que tratam de eventos de teclas que são acionados pelo usuário interagindo com componentes do teclado.
  3. A interface MouseListener é notificada quando um mouse está estável e recebe potencial de evento relacionado a sair, entrar, clicar, pressionar ou liberar componente no quadro visual do usuário.
  4. A interface Component Listener recebe potenciais de eventos de componentes. Aqui, um componente se refere a qualquer objeto gráfico projetado para interagir com o usuário, como botões, caixas de seleção e barras de rolagem.

Diferença entre adaptador de classe e adaptador de objeto

Para garantir funcionalidade e flexibilidade, a programação orientada a objetos como JAVA oferece aos programadores recursos como herança e composição. Se você tentar reutilizar um código específico herdando seus recursos de outra classe, a subclasse que você criar permanecerá dependente da classe pai durante todo o comprimento do programa.

Isso torna o sistema, em muitos casos, cada vez mais complexo e menos testável e torna a troca de funcionalidades em tempo de execução extremamente difícil. Na composição, uma classe só usa outra. O desacoplamento entre os dois é ainda mais promovido pela definição clara das interfaces.

O debate entre adaptador de classe versus adaptador de objeto pode, portanto, ser resolvido da seguinte maneira. O Class Adapter usa herança e, portanto, é capaz de agrupar apenas uma classe. Ele não pode encapsular uma interface porque, por definição, deve derivar de alguma classe base. Um adaptador de objeto usa composição e, portanto, é capaz de agrupar classes e interfaces. Isso é obtido principalmente porque, na composição, cada classe ou interface é um membro privado e encapsulado.

Vantagens de uma classe de adaptadores

  1. Uma classe adaptadora auxilia classes não relacionadas a trabalharem juntas.
  2. Com o uso de uma classe de adaptador, a mesma classe pode ser usada de várias maneiras.
  3. Os usuários têm a opção de um kit plugável para o desenvolvimento de aplicativos. O uso de classe, portanto, torna-se altamente reutilizável.
  4. Aumenta a transparência das classes.
  5. Ele fornece uma maneira de incluir padrões relacionados em uma classe.

Aprenda cursos de engenharia de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Conclusão

Com este artigo, entendemos a mecânica de uma classe adaptadora em JAVA, os três pacotes principais que contêm classes adaptadoras e os benefícios das classes adaptadoras para os programadores. As classes adaptadoras são classes abstratas para receber vários eventos e existem como uma conveniência para a criação de objetos ouvintes. Com suas diferentes funcionalidades, as classes de adaptadores oferecem aos programadores a plataforma inovadora através da metodologia Swing.

Se você deseja melhorar suas habilidades em Java, você precisa colocar as mãos nesses projetos Java. Se você estiver interessado em aprender mais sobre Java, desenvolvimento full-stack, confira o Programa PG Executivo do upGrad & IIIT-B em Desenvolvimento de Software Full-stack, que é projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, 9+ projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.

O que é classe de adaptador em Java?

Classe de adaptador é uma classe que é definida usando o padrão de adaptador. Um adaptador pode ser usado para adicionar novos recursos a uma classe existente sem modificar a classe original. Por exemplo, a classe java.util.Scanner é do pacote java.util. A classe Scanner não pode ler de um arquivo porque um arquivo não é um InputStream. Para ler um arquivo, criamos uma classe adaptadora que aceita um InputStream como argumento e retorna os dados processados ​​como um objeto. O padrão de adaptador é usado para estender a funcionalidade de uma classe existente sem modificar seu código de forma alguma.

O que são padrões de projeto em Java?

Um padrão de projeto é uma solução geral reutilizável para um problema comum dentro de um determinado contexto no projeto de software. Não é um design acabado que pode ser transformado diretamente em código. É uma descrição ou modelo de como resolver um problema que pode ser usado em muitas situações diferentes. Na programação orientada a objetos, os padrões de projeto são convenções estabelecidas que facilitam o projeto e a implementação de sistemas de software. Existem vários padrões de projeto em Java. Não é necessário que um padrão de projeto tenha que ser retirado de outra linguagem. Padrões de projeto podem ser escritos de uma forma muito simples e curta.

Qual é o padrão de projeto mais usado em Java?

Você encontrará muitos padrões de projeto em java. O padrão de projeto mais usado é o Padrão de Fábrica. Tem muitas aplicações no desenvolvimento empresarial. Ele ajuda a remover a dependência de classes concretas no aplicativo. Vamos dar-lhe um exemplo da vida real. Em um aplicativo de comércio eletrônico, você pode ter um requisito para criar um objeto de um usuário no ambiente de teste e de produção. A classe user pode ter muitas subclasses como Admin, Shopkeeper, Seller, User etc. O método main comum no padrão de fábrica se parece com: public class UserFactory { public static Object create() { User user = createAdmin(); // veja se admin tem permissão para retornar usuário ; // retorna o usuário atual } }. Veja aqui como a classe do usuário não é dependente da classe concreta. Embora não seja um exemplo completo, mostra como funciona o padrão Factory.