Padrões de proxy, decorador, adaptador e ponte

Padrões de proxy, decorador, adaptador e ponte

 

1. Introdução

Neste artigo, vamos nos concentrar nos padrões de design estrutural em Java - e discutir o que são esses e algumas diferenças fundamentais entre alguns deles.

2. Padrões de projeto estrutural

De acordo com o Gang Of Four (GoF), os padrões de design podem ser classificados em três tipos:

  1. Criação

  2. Estrutural

  3. Comportamental

Simplificando, os Padrões Estruturais lidam com a composição de classes e objetos. Eles fornecem maneiras diferentes de usar a composição e a herança de objetos para criar alguma abstração.

3. Padrão de proxy

Com este padrão,we create an intermediary that acts as an interface to another resource, por exemplo, um arquivo, uma conexão. Esse acesso secundário fornece um substituto para o componente real e o protege da complexidade subjacente.

Para um exemplo detalhado do padrão, dê uma olhada no post dedicado:The Proxy Pattern in Java.

Pontos-chave de diferenciação:

  • O proxy fornece a mesma interface que o objeto para o qual está mantendo a referência e não modifica os dados de nenhuma maneira; está em contraste com os padrões Adaptador e Decorador que alteram e decoram as funcionalidades de instâncias pré-existentes, respectivamente

  • O Proxy geralmente tem as informações sobre o assunto real no próprio tempo de compilação, enquanto o Decorator e o Adaptador são injetados no tempo de execução, sabendo apenas a interface do objeto real

4. Padrão Decorador

This pattern is useful for enhancing the behavior of an object. Para uma visão geral detalhada, dê uma olhada no tutorial em foco aqui:Decorator Pattern in Java

Pontos-chave de diferenciação:

  • Embora os padrões Proxy e Decorator tenham estruturas semelhantes, eles diferem na intenção; enquanto o objetivo principal do Proxy é facilitar a facilidade de uso ou acesso controlado, um decorador atribui responsabilidades adicionais

  • Os padrões de proxy e adaptador mantêm uma referência ao objeto original

  • Todos os decoradores desse padrão podem ser usados ​​recursivamente, um número infinito de vezes, o que não é possível com outros modelos

5. Padrão do adaptador

The Adapter pattern is used for connecting two incompatible interfaces that otherwise cannot be connected directly. Um adaptador envolve uma classe existente com uma nova interface para que se torne compatível com a interface necessária.

Para uma descrição detalhada e implementação, dê uma olhada na postagem dedicada:Adapter Pattern in Java

As principais diferenças entre os padrões de adaptador e proxy são:

  • Enquanto o proxy fornece a mesma interface, o Adapter fornece uma interface diferente que é compatível com seu cliente

  • O padrão do adaptador é usado depois que os componentes do aplicativo são projetados para que possamos usá-los sem modificar o código-fonte. Isso contrasta com o padrão Bridge, usado antes dos componentes serem projetados.

6. Padrão de ponte

The Bridge pattern is used to decouple an abstraction from its implementation para que os dois possam variar independentemente.

Isso significa criar uma interface de ponte que usa princípios de POO para separar responsabilidades em diferentes classes abstratas.

Para uma descrição detalhada e implementação, dê uma olhada na postagem dedicada:Bridge Pattern in Java

Key Points of Differentiation:

  • Um padrão de ponte só pode ser implementado antes que o aplicativo seja projetado.

  • Permite que uma abstração e implementação sejam alteradas independentemente, enquanto um padrão do adaptador torna possível que classes incompatíveis trabalhem juntas

7. Conclusão

Neste artigo, focamos no padrão de projeto estrutural e nas diferenças entre alguns de seus tipos.

Como sempre, a implementação completa deste tutorial pode ser encontradaover on Github.