Buscar

5 - Padrões de Operação

Prévia do material em texto

08/06/2010
1
Padrões de Projeto
Carga Horária 67hs
Padrões de Operação
Prof. Giuseppe Anthony N. Lima
giuseppeanl@gmail.com
Instituto Federal de Educação Tecnológica da Paraíba
CST – Sistemas para Internet
Padrões de Operação
• Padrões de Operação
– Objetos reproduzem seu comportamento a partir da 
chamada de serviços
• Serviços são operações
– Entenda-se aqui como método abstrato
– Definidos através de uma assinatura
• Método 
– É a implementação de um serviço (um método concreto)
• Algoritmo
– Seqüência de instruções que pode aceitar uma entrada e 
reproduzir uma saída. Pode ser um método, parte de um 
método ou consistir em vários métodos
Padrão Template Method
• Definição:
“Definir o esqueleto de um algoritmo dentro de 
uma operação, deixando alguns passos a serem 
preenchidos pelas subclasses. Template Method 
permite que suas subclasses redefinam certos 
passos de um algoritmo sem mudar sua estrutura” 
[GoF]
Template Method
• O que é um Template?
– Define uma maneira para que possamos incluir 
algo respeitando um modelo
– Geralmente nos permite reaproveitar alguma 
coisa que já foi incluída
Template Method
• Exemplo de Template
– Uma página web gerada dinamicamente possui 
áreas para inserção de informações
• Topo, conteúdo e rodapé.
• Podemos usar um template que permitirá reaproveitar 
a área de topo e rodapé na geração de outras páginas. 
• A página modelo contém uma entrada quer permite 
colocar o conteúdo na respectiva parte da página, se 
ele existir.
Template Method
• O que tem haver Template Method com isso?
– É um padrão que irá permitir executar um algoritmo 
de um método, de forma dividida
– Tal estrutura deverá fornecer um meio de incluir 
implementações de partes desse algoritmo
• Por isso se diz que...
– Template Method implementa um algoritmo em um 
método adiando a definição de alguns passos do 
algoritmo para que subclasses possam defini-los.
08/06/2010
2
Template Method
• Problema
Template Method
• Estrutura
Veja que o padrão permite 
colocar uma estrutura fixa de um 
algoritmo que concentra suas 
partes (operações primitivas)...
...e as subclasses contém as 
implementações de tais partes: 
dependendo da subclasse utilizada pelo 
cliente teremos um modo diferente de 
executar uma mesma operação!
Template Method
• Exemplo 1:
– Criar uma operação que devolve links de acordo 
com o formato dos dados
• Exemplo 2:
Template Method
public final preparar() {
esquentarAgua();
colocarIngredientes();
filtrarCoar();
servirGarrafa();
}
Atenção o método que reúne as 
partes do algoritmo não pode ser 
sobrescrito: preparar() é final!
colocarIngredientes() -> pó café colocarIngredientes() -> pó chá
colocarIngredientes() -> polpa
Template Method
• Veja que existem bebidas que podem ser 
preparadas 
– A quente: café e chá;
– Temperatura ambiente: suco;
• Então o método que reproduz a etapa 
esquentarAgua() deverá ficar desativado para 
Suco!
– Adicionaremos um hook (gancho) que 
“enganchará” tal etapa ou não no template
• Colocando um “gancho”:
Template Method
public final preparar() {
//adicionando gancho
if (aguaQuente())
esquentarAgua();
colocarIngredientes();
filtrarCoar();
servirGarrafa();
}
aguaQuente() --> true
colocarIngredientes() -> pó café
aguaQuente --> true
colocarIngredientes() -> pó chá
aguaQuente --> false
colocarIngredientes() -> polpa
08/06/2010
3
Template Method
• Gerando um Template Method
– Método final que reúne as partes de um algoritmo
– Métodos abstratos que seriam a realização das 
partes de um algoritmo, a serem redefinidos por 
subclasses
– Métodos abstratos “gancho”
• Tomam a decisão sobre um método abstrato a ser 
chamado na classe abstrata (true ou false)
• Podem fazer algo ou nada durante uma etapa
Template Method
• O método Collections.sort(List) é um Template
Method!
– Ele é o método que contém o algoritmo de ordenação 
Merge Sort
– Uma das etapas de Merge Sort é comparar um 
elemento com outro
– O elemento a ser comparado para participar do 
template deve implementar a interface Comparable
• Obrigatoriedade de implementar o método compareTo(<o> 
obj) que retorna se o objeto cujo serviço foi invocado deve 
vir antes (-1), igual(0), depois(1) do objeto passado como 
parâmetro
Template Method
• Subclasses decidem o que deverá ser feito!
– É uma característica comum entre FactoryMethod 
e Template Method, mas eles diferem!
• Template Method (operacional): decide qual(is) 
algoritmo (s) será(ão) utilizado(s)
• Factory Method (criação): decide qual classe concreta 
de um produto será usada na criação
State
• Definição
– "Permitir a um objeto alterar o seu 
comportamento quanto o seu estado interno 
mudar. O objeto irá aparentar mudar de classe.“ 
[GoF]
State
• Problema
Dependendo do estado 
do objeto ele executará 
um mesmo serviço de 
maneira diferente!
State
• Estrutura 
-Interface que interessa aos clientes (o cliente seta o 
estado)
- Mantém uma instância de um estado concreto que 
define o estado atual
- Define um interface 
que encapsula o 
comportamento 
associado com estado 
particular 
- Contém 
implementação de um 
comportamento 
associado ao estado
08/06/2010
4
State
• Exemplo
- Cliente seta o estado
State
• State
– Às vezes, as classes que implementam um 
comportamento a partir de um estado mudam o 
estado do contexto
• Nesse caso, cada classe State, deve manter uma 
referência para seu contexto
• O contexto deve fornecer seus estados a partir de 
métodos
• De posse dessa referência, um State pode mudar o 
estado usado por um contexto
Strategy
• Definição
– "Definir uma família de algoritmos, encapsular 
cada um, e fazê-los intercambiáveis. Strategy 
permite que algoritmos mudem 
independentemente entre clientes que os 
utilizam.“ [GoF]
Strategy
• Problema
Strategy
• Estrutura - Repassa requisições 
de seus clientes para 
sua estratégia!
Strategy
• Exemplo
- Parece com State só 
que a decisão aqui é 
interna: estratégias 
não podem ser 
reveladas ao cliente, 
veja o código de 
configuração da 
estratégia em 
definirEstrategia()
08/06/2010
5
Strategy
• Strategy e State diferem quanto a intenção!
– Um estado pode ser alterado pelo cliente
– Uma estratégia é decidida internamente

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes