





Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
padrões de projetos: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
Tipologia: Manuais, Projetos, Pesquisas
1 / 9
Esta página não é visível na pré-visualização
Não perca as partes importantes!






Manaus-AM 2020
Manaus-AM 2020
antigo. Como não temos o código do novo fornecedor e também não podemos alterá-la, o que pode ser feito é criar uma classe que faça essa adaptação, ou seja, ela é responsável por adaptar a interface do novo fornecedor ao formato que o sistema espera. O Adapter é muito utilizado para compatibilizar o seu sistema a outros frameworks ou APIs. Portanto, o adaptador é um intermediador que recebe solicitações do cliente e converte essas solicitações num formato que o fornecedor entenda. O adaptador converte uma interface para outra, porém, também poderíamos ter um caso em que precisaríamos adaptar mais de uma classe. Se a interface do fornecedor mudar novamente apenas o Adaptador necessitará ser modificado sem alterar o resto do sistema. O Padrão Adapter possui diversas boas práticas de programação orientada a objetos como o uso da composição de objetos, vinculação do cliente a uma interface e não a uma implementação e flexibilidade com o uso de diversos adaptadores.
Este padrão é utilizado quando queremos separar a abstração da implementação, sendo que, justamente por trabalhar com a forma que interfaces e classes são elaboradas, é considerado um padrão estrutural. Sua aplicação pode ser encontrada em pontes de conexão com bancos de dados JDBC, implementações de renderização gráfica em diferentes plataformas, e até mesmo a implementação de listas do Java. Este padrão tem as seguintes características: Capacidade de evitar uma ligação permanente entre uma abstração e implementação; Proteção dos clientes com relação a alterações de implementação; Capacidade de esconder completamente uma implementação do cliente; Menor complexidade para gerenciar hierarquias;
O padrão Bridge facilita quando temos uma quantidade grande de hierarquias e extensões, facilitando o uso das implementações, isolando elas do cliente, assim como uma melhor separação entre abstração e implementação, muito utilizado na definição sistemas de renderização gráfica multi-plataforma, pontes de conexões de bancos de dados JDBC e o mais famoso, a implementação de listas do Java. Em contrapartida, temos um aumento considerável na quantidade e complexidade do código, dada a criação de várias classes adicionais.
O Composite é um padrão de projeto estrutural que permite que você componha objetos em estruturas de árvores e então trabalhe com essas estruturas como se elas fossem objetos individuais. A ideia do Composite é criar uma classe base que contém toda a interface necessária para todos os elementos e criar um elemento especial que agrega outros elementos.
A expansão das funcionalidades é dinâmica, em tempo de execução, e não estática, em tempo de compilação. Isso dá maior flexibilidade a evolução ao código; Permite que as classes de componente concreto continuem simples movendo o embelezamento (novas funcionalidades) para classes decoradoras.
Facade tem como objetivo esconder a complexidade de um sistema expondo apenas as interfaces que o cliente precisa enxergar. Com isso o sistema fica mais simples e fornece uma coleção de métodos mais fáceis de entender. Vantagens ; Facilita a portabilidade do sistema; Isola os clientes dos componentes do subsistema reduzindo o número de objetos com os quais o cliente tem que lidar Promove um acoplamento fraco entre o subsistema e seus clientes. (O acoplamento fraco permite variar os componentes do subsistema sem afetar os seus clientes). Não impede as aplicações de utilizarem as classes do subsistema caso necessitem. FLYWEIGHT O objetivo do padrão é usar compartilhamento para suportar eficientemente grandes quantidades de objetos de granularidade fina”. É um padrão de projeto de software apropriado quando vários objetos devem ser manipulados em memória sendo que muitos deles possuem informações repetidas. Dado que o recurso de memória é limitado, é possível segregar a informação repetida em um objeto adicional que atenda as características de imutabilidade e comparabilidade (que consiga ser comparado com outro objeto para determinar se ambos carregam a mesma informação).
O padrão Flyweight cria uma estrutura de compartilhamento de objetos pequenos. Para o exemplo citado, o padrão será utilizado no compartilhamento de imagens entre as entidades. Outro objetivo é tornar os componentes reutilizáveis que permitam agilidade para as soluções de problemas recorrentes no desenvolvimento do sistema. A motivação é reduzir o consumo de memória e o custo em tempo de execução. É ideal para uma aplicação quando esta utiliza um grande número de objetos, quando os custos são altos devido a isso e quando muitos grupos de objetos podem ser substituídos por relativamente poucos objetos compartilhados.
O seu objetivo principal é encapsular um objeto através de um outro objeto que possui a mesma interface, de forma que o segundo objeto, conhecido como “Proxy”, controla o acesso ao primeiro, que é o objeto real. As principais vantagens de se utilizar o pattern Proxy são: Permite deixar transparente o local (endereço) do objeto real. O cliente não precisa conhecer se o objeto é remoto ou não, este tipo de proxy é conhecido como Remote Proxy. O pattern Proxy é muito utilizado pela tecnologia J2EE, pelo objeto “javax.ejb.EJBObject”, que representa uma referência remota ao EJB. Para o cliente que está