• Nenhum resultado encontrado

Strategy, Template Method, Abstract Factory

N/A
N/A
Protected

Academic year: 2022

Share "Strategy, Template Method, Abstract Factory"

Copied!
36
0
0

Texto

(1)

Strategy, Template Method, Abstract Factory

Rodrigo da Cruz Fujioka fujiokabr@gmail.com

(2)
(3)

Considerações Importantes

• Unidade 2

• Tempo de nivelamento expirou!

• As aulas são com foco nos objetivos.

• Quem estiver tendo dificuldade tem o tempo

• Quem estiver tendo dificuldade tem o tempo após a aula para dúvidas. Em torno de 20 a 30 minutos.

• Se faltar pegue o assunto com os colegas.

(4)

Padrões de Projeto

Objetivos Objetivos

Strategy – Template Method – Abstract Factory Strategy – Template Method – Abstract Factory

Factory Method

(5)

Abstract Factory

Classificação: Criacional Conhecido Como: Kit

Propósito:

Prover interfaces ou superclasses para a criação de objetos relacionados ou dependentes, sem especificar a sua classe concreta ou

sem especificar a sua classe concreta ou implementação [Gamma et al, 1994].

Retornar uma das muitas classes de objetos

relacionadas, onde cada uma delas pode retornar diferentes objetos quando requisitados [Destro, 2004].

(6)

Abstract Factory

Classificação: Criacional Conhecido Como: Kit

Propósito:

Prover interfaces ou superclasses para a criação de objetos relacionados ou dependentes, sem especificar a sua classe concreta ou

sem especificar a sua classe concreta ou implementação [Gamma et al, 1994].

Retornar uma das muitas classes de objetos

relacionadas, onde cada uma delas pode retornar diferentes objetos quando requisitados [Destro, 2004].

(7)

Abstract Factory

Motivação 1:

Usada na criação de famílias de classes dependentes de uma interface ou superclasse, com a estrutura

básica do padrão Factory Method para fazer o básica do padrão Factory Method para fazer o

relacionamento entre as classes dependentes as suas respectivas superclasses ou interfaces.

(8)

Abstract Factory

Motivação 2:

Da mesma maneira em que aparece no Factory

Method, uma classe é criada contendo um método que decide qual das opções de classes de domínio que decide qual das opções de classes de domínio retornar; entretanto não serão as classes simples a serem escolhidas como opções, mas sim as famílias dessas classes, nas quais, pode-se optar por quais classes internas a cada uma dessas famílias se quer retornar.

(9)

Abstract Factory

Motivação 3:

Em resumo, um nível maior de abstração é criado [Destro, 2004]: não se escolhe a classe de retorno dentro de uma família. Opta-se por uma das classes dentro de uma família. Opta-se por uma das classes de retorno e a sua família é automaticamente

retornada. Ou seja, com base nos parâmetros de retorno, uma classe é buscada dentro de uma das famílias disponíveis, sem conhecer as estruturas de relacionamento entre as classes e suas famílias.

(10)

Abstract Factory

Motivação 4:

Por isso, o método tem o nome de Abstract Factory (“fábrica abstrata”), pois pode atuar como uma

fábrica de objetos genérica, recebendo um grupo fábrica de objetos genérica, recebendo um grupo

qualquer de objetos relacionados, que serão criados de maneira transparente ao seu relacionamento.

(11)

Abstract Factory

Motivação 4:

Por isso, o método tem o nome de Abstract Factory (“fábrica abstrata”), pois pode atuar como uma

fábrica de objetos genérica, recebendo um grupo fábrica de objetos genérica, recebendo um grupo

qualquer de objetos relacionados, que serão criados de maneira transparente ao seu relacionamento.

(12)

Abstract Factory

Aplicabilidade Sugestões para o uso desse padrão [Gamma et al, 1994]:

Situações em que um sistema deve ser independente da maneira como seus produtos são criados, relacionados e representados;

Quando é necessária uma configuração utilizando uma das várias

Quando é necessária uma configuração utilizando uma das várias famílias de produtos;

No projeto de produtos que devem ser, obrigatoriamente, agrupados em famílias e seu uso é inerente a essa condição;

No fornecimento de uma biblioteca de classes de produtos, e

deve-se revelar apenas suas interfaces ou superclasses, e não suas implementações ou subclasses.

(13)

Abstract Factory

(14)

Abstract Factory

http://www.dsc.ufcg.edu.br/~jacques/cursos/m ap/html/pat/abstractfactory.htm

http://www.javapractices.com/topic/TopicActio http://www.javapractices.com/topic/TopicActio

n.do?Id=128

(15)

Template Method

• Define o esqueleto de um algoritmo numa operação, deixando que subclasses

completem algumas das etapas

• O padrão Template Method permite que

subclasses redefinam determinadas etapas de um algoritmo sem alterar a estrutura do

algoritmo

(16)

Template Method

• Resumo

– Um Template Method define um algoritmo usando operações abstratas

– Subclasses fazem override das operações para prover um comportamento concreto

– Este padrão é a base para a construção de frameworks

(17)

Quando Utilizar!

• Para implementar partes invariantes de um

algoritmo uma única vez e deixar subclasses

implementarem o comportamento variável

(18)

Quando Utilizar!

• Quando comportamento comum entre

subclasses deveria ser fatorado e localizado numa classe comum para evitar duplicação

É um passo freqüente de "refactoring" de código Primeiro identifique as diferenças

Coloque as diferenças em novos métodos

Substitua o código das diferenças por uma chamada a um dos novos métodos

(19)

Template Method

(20)

Template Method

(21)

Template Method

(22)

Template Method

(23)

Template Method

(24)

Template Method

(25)

Template Method

1. METSKER, S. J. PADRÕES DE PROJETO EM JAVA, Pág. 197.

2004

2. FOWLER, M. UML ESSENTIALS: um breve guia para a linguagem-padrão de modelagem de objetos. 3ª ed. pág linguagem-padrão de modelagem de objetos. 3ª ed. pág 52. Porto Alegre.Bookman. 2005.

3. FREEMAN, E., FREEMAN, E. Use a cabeça! Padrões de Projeto. 2°Edição Pág 212. Alta Books, 2009.

(26)

Strategy!

• Classificação: Comportamental

• Conhecido como: Policy

• Propósito:

– Definir uma família de algoritmos, encapsular cada – Definir uma família de algoritmos, encapsular cada

um, e fazê-los intercambiáveis

– Strategy permite que algoritmos variem

independentemente entre clientes que os utilizam

(27)

Strategy!

• Classificação: Comportamental

• Conhecido como: Policy

• Propósito:

– Definir uma família de algoritmos, encapsular cada – Definir uma família de algoritmos, encapsular cada

um, e fazê-los intercambiáveis

– Strategy permite que algoritmos variem

independentemente entre clientes que os utilizam

(28)

Strategy!

• Motivação: Quando se necessita de um

algoritmo que trata de modos diferentes os

dados submetidos a ele.

(29)

Strategy!

• Aplicabilidade:

Quando uma classe define muitos comportamentos

Quando classes relacionadas forem diferentes apenas no seu comportamento

Quando você precisar de diferentes variações de um Quando você precisar de diferentes variações de um

mesmo algoritmo

Múltiplas classes diferem somente quanto aos seus comportamentos. A servlet API é um exemplo clássico disso.

Um algoritmo utiliza dados que não são conhecidos ao cliente.

(30)

Strategy!

Estrutura do padrão Strategy

(31)

Strategy!

Participantes

Estrategia : define uma interface comum para todos os algoritmos suportados.

EstrategiaConcreta1 e EstrategiaConcreta2: implementa o algoritmo usando a interface de Estratégia.

algoritmo usando a interface de Estratégia.

Contexto:

É configurado com um objeto EstrategiaConcreta.

Mantém uma referência para um objeto EstrategiaConcreta.

Pode definir uma interface que permite a Estrategia acessar seus dados.

(32)

Strategy!

Conseqüências

– Vantagens:

Famílias de algoritmos relacionados;

Uma alternativa ao uso de subclasses;

Eliminam comandos condicionais;

Eliminam comandos condicionais;

– Desvantagens:

Aumento do número de objetos.

(33)

Strategy!

http://www.macoratti.net/08/08/net_stgy.htm http://www.dsc.ufcg.edu.br/~jacques/cursos/m

ap/html/pat/strategy.htm

(34)

Exercício

1 – Procure pelo Padrão State e compare ele com o Strategy.

2 – Compare o factory Method com o Abstract Factory!

3 – Implemente em Java ou PHP o template Method para um algoritmo que segue a seguinte ordem

A – Usuário realiza compra A – Usuário realiza compra

B – Usuário escolhe forma de pagamento

C – Usuário realiza pagamento de acordo com a forma escolhida.

D – Mensagem de compra realizada com sucesso

Data Limite -> 22/04/2011 < Não existira prorrogação!

(35)
(36)

Considerações Finais

Dúvidas?

FIM

Referências

Documentos relacionados

A partir deste resultado, a empresa então teve condições de analisar as causas do problema e partir para melhorias buscando sua solução, além de tomar a decisão

Nos outros lados as forzas da carga situada en A e a do outro vértice sem- pre sumarían e tampouco se anularían.. C.1.- Un condutor macizo en forma de esfera recibe unha

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

A RCJS desenvolve ações que visam aproximar EES e comunidades/instituições ligadas à Igreja Evangélica de Confissão Luterana no Brasil (IECLB) e a escolas da

A Equipa de Saúde Mental Comunitária do DPSM – HSFX presta assistên- cia especializada a adultos na área da Saúde Mental no Centro de Saúde de Oeiras, realizando as consultas

· Outras informações Não existe mais nenhuma informação relevante disponível. * 10 Estabilidade

Contudo, conforme discussão anterior, a proxy que está sendo utilizada para caracterizar a cronicidade da pobreza (ou ausência de mobili- dade social) é o período de