Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


padrões de projetos - Estrutural(JAVA\POO), Manuais, Projetos, Pesquisas de Tecnologia de Informação

padrões de projetos: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy

Tipologia: Manuais, Projetos, Pesquisas

2020

Compartilhado em 30/08/2020

danrlei-silva
danrlei-silva 🇧🇷

2 documentos

1 / 9

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Centro de Tecnologia do Amazonas - CETAM
Instituto Benjamin Constant - IBC
Curso Técnico em Informática
Linguagem de Programação III POO/JAVA
Structural Designer Patterns (Estrutural)
Manaus-AM
2020
pf3
pf4
pf5
pf8
pf9

Pré-visualização parcial do texto

Baixe padrões de projetos - Estrutural(JAVA\POO) e outras Manuais, Projetos, Pesquisas em PDF para Tecnologia de Informação, somente na Docsity!

Centro de Tecnologia do Amazonas - CETAM

Instituto Benjamin Constant - IBC

Curso Técnico em Informática

Linguagem de Programação III – POO/JAVA

Structural Designer Patterns (Estrutural)

Manaus-AM 2020

Centro de Tecnologia do Amazonas - CETAM

Instituto Benjamin Constant - IBC

Curso Técnico em Informática

Linguagem de Programação III – POO/JAVA

Danrlei Vitor Ferreira da Silva

Daniel da Silva de Oliveira

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.

BRIDGE

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.

COMPOSITE

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

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.

PROXY

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á