Você está na página 1de 33

Estruturais

Definição
Classes
Class Adapter
Problema:
Solução:
O que o padrão propõe:
Benefícios:
Objetos
Object Adapter
Problema:
Solução:
O que o padrão propõe:
Benefícios:
Bridge
Problema:
Solução:
O que o padrão propõe:
Benefícios:
Composite
Problema:
Solução:
O que o padrão propõe:
Benefícios:
Decorator
Problema:
Solução:
O que o padrão propõe:
Benefícios:
Facade
Problema:
Solução:
O que o padrão propõe:
Benefícios:
Flyweight
Problema:
Solução:
O que o padrão propõe:
Benefícios:

Estruturais 1
Proxy
Problema:
Solução:
O que o padrão propõe:
Benefícios:

Definição
São padrões utilizados para organizar classes e objetos de forma eficiente,
facilitando a comunicação e a interação entre eles.

Classes

Class Adapter
Problema:
Necessidade de utilizar objetos de interfaces incompatíveis, de modo que os
objetos de incompatíveis se comuniquem e realizem interações entre si.

Solução:
O padrão Class Adapter propõe a criação de uma classe intermediária que atua
como um adaptador entre duas interfaces incompatíveis.

Essa classe adapta a interface do objeto "adaptee" (incompatível) para a


interface do objeto "target" (compatível), permitindo que eles possam interagir
entre si.

O que o padrão propõe:


O padrão Class Adapter propõe a criação de uma classe intermediária que atua
como um adaptador entre duas interfaces incompatíveis.

Essa classe adapta a interface do objeto "adaptee" (incompatível) para a


interface do objeto "target" (compatível), permitindo que eles possam interagir
entre si.

Estruturais 2
Estruturais 3
Benefícios:

Estruturais 4
Permite a comunicação entre objetos de interfaces incompatíveis.

Evita a necessidade de modificar o código dos objetos existentes para torná-los


compatíveis.

Facilita a reutilização de código, já que o adaptador pode ser utilizado em


diferentes contextos para adaptar diferentes objetos incompatíveis.

Objetos

Object Adapter
Problema:
Necessidade de utilizar objetos de interfaces incompatíveis, de modo que os
objetos de incompatíveis se comuniquem e realizem interações entre si.

Solução:
O padrão Object Adapter propõe a criação de uma classe intermediária que atua
como um adaptador entre duas interfaces incompatíveis.

Essa classe contém uma instância do objeto "adaptee" (incompatível) e adapta


sua interface para a interface do objeto "target" (compatível), permitindo que
eles possam interagir entre si.

O que o padrão propõe:


O padrão Object Adapter propõe a criação de uma classe intermediária que atua
como um adaptador entre duas interfaces incompatíveis.

Essa classe contém uma instância do objeto "adaptee" (incompatível) e adapta


sua interface para a interface do objeto "target" (compatível), permitindo que
eles possam interagir entre si.

Estruturais 5
Estruturais 6
Estruturais 7
Estruturais 8
Benefícios:
Permite a comunicação entre objetos de interfaces incompatíveis.

Evita a necessidade de modificar o código dos objetos existentes para torná-los


compatíveis.

Facilita a reutilização de código, já que o adaptador pode ser utilizado em


diferentes contextos para adaptar diferentes objetos incompatíveis.

Permite a criação de múltiplos adaptadores para diferentes objetos "adaptee",


sem a necessidade de criar uma classe adaptadora para cada um deles.

Bridge
Problema:
Necessidade de separar um conjunto de classes intimamente ligadas.

Existência de abstrações implementadas fortemente acopladas.

Solução:
O padrão Bridge propõe a separação de uma abstração de sua implementação,
de modo que elas possam variar independentemente uma da outra.

Essa separação é feita através da criação de uma hierarquia de classes


abstratas para a abstração e outra hierarquia de classes abstratas para a
implementação.

A abstração contém uma referência para a implementação, permitindo que ela


possa delegar tarefas para a implementação sem conhecer os detalhes de sua
implementação.

O que o padrão propõe:


O padrão Bridge propõe a separação de uma abstração de sua implementação,
de modo que elas possam variar independentemente uma da outra.

Essa separação é feita através da criação de uma hierarquia de classes


abstratas para a abstração e outra hierarquia de classes abstratas para a
implementação.

Estruturais 9
A abstração contém uma referência para a implementação, permitindo que ela
possa delegar tarefas para a implementação sem conhecer os detalhes de sua
implementação.

Estruturais 10
Estruturais 11
Estruturais 12
Benefícios:
Permite a variação independente da abstração e da implementação.

Estruturais 13
Facilita a adição de novas abstrações e implementações sem afetar as
existentes.

Reduz o acoplamento entre a abstração e a implementação, tornando o código


mais flexível e fácil de manter.

Facilita a reutilização de código, já que as abstrações e implementações podem


ser combinadas de diferentes maneiras para criar novos objetos.

Composite
Problema:
Necessidade de tratar objetos compostos e objetos simples de maneira
uniforme.

Dificuldade em adicionar novos tipos de objetos à estrutura existente.

Dificuldade em percorrer a estrutura de objetos de maneira eficiente.

Solução:
O padrão Composite propõe a criação de uma hierarquia de classes que
permite tratar objetos compostos e objetos simples de maneira uniforme.

Essa hierarquia é composta por uma classe abstrata que define a interface
comum para todos os objetos da hierarquia, e duas subclasses: uma para
objetos simples e outra para objetos compostos.

A classe para objetos compostos contém uma lista de objetos filhos, permitindo
que eles possam ser tratados como um único objeto composto.

O que o padrão propõe:


O padrão Composite propõe a criação de uma hierarquia de classes que
permite tratar objetos compostos e objetos simples de maneira uniforme.

Essa hierarquia é composta por uma classe abstrata que define a interface
comum para todos os objetos da hierarquia, e duas subclasses: uma para
objetos simples e outra para objetos compostos.

Estruturais 14
A classe para objetos compostos contém uma lista de objetos filhos, permitindo
que eles possam ser tratados como um único objeto composto.

Estruturais 15
Estruturais 16
Benefícios:
Permite tratar objetos compostos e objetos simples de maneira uniforme.

Facilita a adição de novos tipos de objetos à estrutura existente.

Facilita a manipulação de objetos compostos, já que eles podem ser tratados


como um único objeto.

Facilita a percorrer a estrutura de objetos de maneira eficiente, já que a


estrutura é organizada em uma hierarquia.

Decorator
Problema:
Necessidade de adicionar funcionalidades a um objeto de forma dinâmica, sem
modificar sua estrutura interna.

Dificuldade em estender a funcionalidade de um objeto sem afetar outros


objetos da mesma classe.

Solução:
O padrão Decorator propõe a criação de uma classe decoradora que envolve
um objeto existente e adiciona funcionalidades a ele.

Essa classe implementa a mesma interface do objeto original, permitindo que


ela possa ser usada no lugar do objeto original.

A classe decoradora contém uma instância do objeto original e adiciona


funcionalidades a ele através de métodos adicionais.

O que o padrão propõe:


O padrão Decorator propõe a criação de uma classe decoradora que envolve
um objeto existente e adiciona funcionalidades a ele.

Essa classe implementa a mesma interface do objeto original, permitindo que


ela possa ser usada no lugar do objeto original.

A classe decoradora contém uma instância do objeto original e adiciona


funcionalidades a ele através de métodos adicionais.

Estruturais 17
Estruturais 18
Estruturais 19
Estruturais 20
Benefícios:
Permite adicionar funcionalidades a um objeto de forma dinâmica, sem modificar
sua estrutura interna.

Facilita a estender a funcionalidade de um objeto sem afetar outros objetos da


mesma classe.

Facilita a criação de objetos com funcionalidades personalizadas, já que as


funcionalidades podem ser adicionadas ou removidas de forma modular.

Facilita a reutilização de código, já que as classes decoradoras podem ser


combinadas de diferentes maneiras para criar novos objetos.

Facade
Problema:
Necessidade de reduzir a complexidade de um sistema.

Dificuldade em utilizar uma parte do sistema sem conhecer muitos detalhes


sobre sua estrutura interna.

Solução:
O padrão Facade propõe a criação de uma classe que fornece uma interface
simplificada para um subsistema complexo.

Essa classe encapsula a complexidade do subsistema e fornece métodos


simples para realizar tarefas comuns.

O cliente utiliza apenas a classe Facade para interagir com o subsistema, sem
precisar conhecer os detalhes de sua implementação.

O que o padrão propõe:


O padrão Facade propõe a criação de uma classe que fornece uma interface
simplificada para um subsistema complexo.

Essa classe encapsula a complexidade do subsistema e fornece métodos


simples para realizar tarefas comuns.

Estruturais 21
O cliente utiliza apenas a classe Facade para interagir com o subsistema, sem
precisar conhecer os detalhes de sua implementação.

Estruturais 22
Estruturais 23
Estruturais 24
Benefícios:
Reduz a complexidade de um sistema, tornando-o mais fácil de entender e
utilizar.

Facilita a utilização de uma parte do sistema sem conhecer muitos detalhes


sobre sua estrutura interna.

Facilita a manutenção do sistema, já que as mudanças na implementação do


subsistema não afetam a interface fornecida pela classe Facade.

Facilita a reutilização de código, já que a classe Facade pode ser utilizada em


diferentes contextos para fornecer uma interface simplificada para o mesmo
subsistema.

Flyweight
Problema:
Necessidade de minimizar o uso de recursos quando se trabalha com um
grande volume de objetos.

Preocupação com elementos repetidos no cenário.

Solução:
O padrão Flyweight propõe a criação de objetos leves que podem ser
compartilhados entre várias instâncias.

Esses objetos contêm apenas as informações que são únicas para cada
instância, enquanto as informações comuns são armazenadas em um objeto
compartilhado.

O cliente utiliza uma fábrica para criar e gerenciar os objetos leves.

O que o padrão propõe:


O padrão Flyweight propõe a criação de objetos leves que podem ser
compartilhados entre várias instâncias.

Esses objetos contêm apenas as informações que são únicas para cada
instância, enquanto as informações comuns são armazenadas em um objeto

Estruturais 25
compartilhado.

O cliente utiliza uma fábrica para criar e gerenciar os objetos leves.

Estruturais 26
Estruturais 27
Estruturais 28
Estruturais 29
Benefícios:
Minimiza o uso de recursos, já que os objetos leves são compartilhados entre
várias instâncias.

Reduz a quantidade de memória necessária para armazenar os objetos, já que


as informações comuns são armazenadas em um objeto compartilhado.

Facilita a criação de objetos com informações personalizadas, já que as


informações comuns são armazenadas em um objeto compartilhado.

Facilita a manipulação de objetos, já que os objetos leves são mais simples e


rápidos de serem criados e manipulados.

Proxy
Problema:
Necessidade de implementar objetos que precisam de muitos recursos, mas
você não quer instanciar tais objetos a menos que eles sejam requisitados pelo
cliente.

Necessidade de controlar acessos a um objeto.

Solução:
O padrão Proxy propõe a criação de um objeto intermediário que controla o
acesso a outro objeto.

Esse objeto intermediário, conhecido como Proxy, implementa a mesma


interface do objeto real e contém uma instância do objeto real.

O Proxy controla o acesso ao objeto real, permitindo que ele seja instanciado
apenas quando necessário.

O que o padrão propõe:


O padrão Proxy propõe a criação de um objeto intermediário que controla o
acesso a outro objeto.

Esse objeto intermediário, conhecido como Proxy, implementa a mesma


interface do objeto real e contém uma instância do objeto real.

Estruturais 30
O Proxy controla o acesso ao objeto real, permitindo que ele seja instanciado
apenas quando necessário.

Benefícios:
Reduz o uso de recursos, já que o objeto real é instanciado apenas quando
necessário.

Facilita o controle de acesso a um objeto, já que o Proxy pode implementar


regras de segurança ou validação antes de permitir o acesso ao objeto real.

Facilita a criação de objetos com funcionalidades adicionais, já que o Proxy


pode adicionar funcionalidades antes ou depois de delegar a chamada ao objeto
real.

Facilita a manutenção do sistema, já que as mudanças na implementação do


objeto real não afetam a interface fornecida pelo Proxy.

Estruturais 31
Estruturais 32
Estruturais 33

Você também pode gostar