Padrões de Projeto
Categorizando
Padrões de Projeto
Apresentadores

Andrey Pires Batista
[email protected]

Guilherme Alexandre Monteiro Reinaldo
[email protected]
{apb,gamr}@cin.ufpe.br
2
Roteiro










O que é Padrão?
Por que estudar Padrões de Projeto?
Gangue dos Quatro “Gang of Four”
Padrões de Projeto
Padrões de Interface
Padrões de Responsabilidade
Padrões de Construção
Padrões de Operação
Padrões de Extensão
Referência
{apb,gamr}@cin.ufpe.br
3
O que é um Padrão?
“ É uma maneira de fazer algo, ou buscar um
objetivo.”
Steven John Metsker
“ cada padrão descreve um problema no nosso
ambiente e o cerne da sua solução, de tal forma
que você possa usar essa solução mais de um
milhão de vezes, sem nunca fazê-lo da mesma
maneira ”
Christopher Alexander
{apb,gamr}@cin.ufpe.br
4
Por que estudar Padrões de
Projeto?

Reutilizar soluções


Início direcionado, não reinventar a roda;
Estabelecer terminologia comum

Comunicação e trabalho em equipe requerem um base de
vocabulário e um ponto de vista em comum;
{apb,gamr}@cin.ufpe.br
5
GoF
Gangue dos Quatro “Gang of Four”


Os padrões de projeto foram originalmente descritos
no livro Padrões de Projeto (GoF) escrito por Erick
Gama e seus colegas.
O GoF classifica os padrões seguindo dois critérios.



Finalidade: reflete o que um padrão faz
Escopo: se aplicam a classes ou objetos
O GoF apresenta um catálogo de 23 padrões de
projeto com finalidade de criação, estrutural ou
comportamental.
{apb,gamr}@cin.ufpe.br
6
Padrões de Projeto
Fonte: Gama, Erick – Padrões de Projeto (1995).
{apb,gamr}@cin.ufpe.br
7
Outras forma de categorizar
Padrões de Projeto

O autor Steven John Metsker, baseado no GoF
organizou o livro “Padrões de Projeto em Java”
categorizando os padrões de projeto segundo seu
objetivo.
“...o objetivo de um padrão de projeto em geral é
facilmente expresso como a necessidade de ir além
das características comuns embutidas em Java...”
Steven John Metsker
{apb,gamr}@cin.ufpe.br
8
Categorizando Padrões de
Projeto Segundo seus Objetivos





Interfaces
Responsabilidade
Construção
Operações
Extensões
Obs.:
O fato de categorizar os padrões por objetivos não quer dizer
que cada um suporte apenas um tipo de objetivo.
{apb,gamr}@cin.ufpe.br
9
Padrões de Projeto
Fonte: Metsker, Steven John – Padrões de Projeto em Java (2004).
{apb,gamr}@cin.ufpe.br
10
Interfaces

O objetivo básico de uma interface é declarar um
conjunto de métodos que uma classe implementa.

Uma exceção a essa responsabilidade ocorre
quando a interface deixa um registrador de objetos
para notificação de eventos.

Interfaces também podem colaborar no uso de
constantes. (declarar constantes nas interfaces)
{apb,gamr}@cin.ufpe.br
11
Padrões de Interfaces
{apb,gamr}@cin.ufpe.br
12
Padrões de Interface

Adapter
Fornece a interface desejada pelo cliente, usando os
serviços de uma classe com uma interface diferente.

Façade
Fornece uma interface unificada para um conjunto de
interfaces, tornando o subsistema mais fácil de usar.

Composite
Compõe objetos em estruturas de árvore para representar
hierarquias do tipo partes-todo, permitindo aos clientes
tratar objetos individuais e composições de objetos de
maneira uniforme.

Bridge
Separa uma abstração de sua implementação de modo que
as duas possam variar independentemente.
{apb,gamr}@cin.ufpe.br
13
Responsabilidade

Delegar uma solicitação ou incumbência para outras
entidades ou sistemas.

A delegação pode ser feita de forma que vise a
centralização, intensificação e limitação da
responsabilidade de objetos comuns.
{apb,gamr}@cin.ufpe.br
14
Padrões de Responsabilidade
{apb,gamr}@cin.ufpe.br
15
Padrões de Responsabilidade

Singleton
Garante que uma classe tenha apenas uma instância e
fornece um ponto global de acesso a ela.

Observer
Define uma dependência de um para muitos de modo
que, quando um objeto mudar de estado, todos os seus
dependentes
sejam
notificados
e
atualizados
automaticamente.

Mediator
Define um objeto que encapsula o modo como um
conjunto de objetos interage. Isso evita que os
objetos se refiram um ao outro explicitamente e permite
variar a interação deles independentemente.
{apb,gamr}@cin.ufpe.br
16
Padrões de Responsabilidade

Proxy
Fornece um procurador, ou marcador de lugar, para outro
objeto a fim de controlar o acesso a ele.

Chain of Responsibility
Evita acoplar o remetente de uma solicitação ao seu
receptor(destinatário) dando a chance a que mais de um
objeto possa lidar com a solicitação. Encadeia os objetos
receptores e passa a solicitação ao longo da cadeia até
que um objeto a trate.

Flyweight
Utiliza o compartilhamento para suportar eficientemente
um grande número de objetos de granularidade fina.
{apb,gamr}@cin.ufpe.br
17
Construção

Construtores
 prover meios de instanciar a classe.

suíte de colaboração
 toda chamada para um construtor também irá
invocar um construtor da superclasse
{apb,gamr}@cin.ufpe.br
18
Padrões de Construção
{apb,gamr}@cin.ufpe.br
19
Padrões de Construção

Builder
Move a lógica de construção para um objeto fora da classe a
instanciar.

Factory Method
Define a interface para criar um objeto, enquanto retém o controle
de qual classe instanciar.

Abstract Factory
Proporciona a criação de uma família de objetos relacionados ou
dependentes sem especificar as suas classes concretas.

Prototype
Fornece novos objetos copiando um exemplo.

Memento
Fornece armazenamento e restauração de um estado do objeto.
{apb,gamr}@cin.ufpe.br
20
Operações

Algoritmo
procedimento – uma seqüência de instruções
– que aceita entradas e produz saídas.
 Aparecem como parte de um método, ou envolver
muitos métodos.
 Um

Método
 Implementação

de uma operação
Operação
 Especificação
de um serviço
{apb,gamr}@cin.ufpe.br
21
Padrões de Operações
{apb,gamr}@cin.ufpe.br
22
Padrões de Operações

Template method
Implementa um algoritmo em um método, postergando a
definição de alguns passos do algoritmo para que outras
classes possam redefini-los.

State
Distribui lógica específica de estado mediante classes que
representem o estado de um objeto.

Strategy
Encapsula estratégias alternativas, ou abordagens, em
classes separadas, cada uma das quais implementando
uma operação comum.
{apb,gamr}@cin.ufpe.br
23
Padrões de Operações

Command
Estabelece uma assinatura de método, na mairia das
vezes execute() ou perform(), e nos deixa definir várias
implementações dessa interface.

Interpreter
Permite que os desenvolvedores componham objetos
executáveis de acordo com um conjunto de regras de
composição definidas.
{apb,gamr}@cin.ufpe.br
24
Extensão

O acréscimo de uma classe, uma interface ou um
método código existente.

Subclasses

Por meio de delegação
 Métodos que encaminham chamadas idênticas
fornecidas por outro objeto (superclasse final)
{apb,gamr}@cin.ufpe.br
25
Padrões de Extensões
{apb,gamr}@cin.ufpe.br
26
Padrões de Extensões

Decorator
Permite que os desenvolvedores componham o
comportamento do objeto dinamicamente, através
do uso de
delegação.

Interator
Fornece uma maneira de acessar os elementos de
uma coleção seqüencialmente.(ex.:iterar sobre um
composite)

Visitor
Deixar definir uma nova operação para uma
hierarquia, sem mudar as suas classes.
{apb,gamr}@cin.ufpe.br
27
Referências



Gamma, Erich
Padrões de projeto: soluções reutilizáveis de software orientado a objeto / Erich
Gamma, Richard Helm, Ralph Johnson e John Vlissides; trad. Luiz A. Meirelles
Salgado. - Porto Alegre: Bookman, 2000
Metsker, Steven John
Padrões de projeto em java / Steven John Metsker; trad. Werner Loeffler. - Porto
Alegre : Bookman, 2004
Shalllonway, Alan
Explicando padrões de projeto: uma nova perspectiva em projeto orientado a
objeto / Alan Shalloway e James R. Trott; trad. Ana M. de Alencar Price. - Porto
Alegre : Bookman, 2004.
{apb,gamr}@cin.ufpe.br
28
Padrões de Projeto
Categorizando
Padrões de Projeto
Download

Padroes de Projeto