• Nenhum resultado encontrado

Padrões Comportamentais

N/A
N/A
Protected

Academic year: 2021

Share "Padrões Comportamentais"

Copied!
82
0
0

Texto

(1)
(2)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Formulário para Descrição de Padrões



Nome e Classificação



Intenção



Também Conhecido

Como



Motivação



Aplicabilidade



Estrutura



Participantes



Colaboradores



Conseqüências



Implementação



Exemplo de Código



Usos Conhecidos



Padrões

Relacionados

(3)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Notação de Classes e Objetos

ClasseAbstrata

operaçãoAbstrata()

SubclasseConcreta1

operação()

variávelDeInstância

referencia objeto

agrega

cria

pseudo código

ClasseConcreta

um

muitos

umObjeto

referênciaAObjeto

outroObjeto

variávelDeInstância

SubclasseConcreta2

(4)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Diagrama de Interação de Objetos

umObjeto

operação a

ti

v

a

sobre

o

ob

jet

o

TEMPO

outroObjeto.método()

this.método()

outroObjeto

outroObjeto = new Objeto()

(instanciação)

(5)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrões Comportamentais(1/2)



Tratam de algoritmos e como atribuir responsabilidades entre

objetos

ChainOf

Responsibility

exec

Command

new

exec()

Interpreter

&

|

b

c

a

*

Iterator

Mediator

Memento

(6)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Observer(s)

30%, 20%, 50%

Padrões Comportamentais(2/2)



Tratam de algoritmos e como atribuir responsabilidades entre

objetos

Visitor

State

Strategy

a() b()

a()

b()

TemplateMethod()

a(..);

...

b(..);

Visitor

Visitor

30%, 10%, 60%

(7)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrões Comportamentais



Enquanto se concentram apenas na

forma como os objetos são conectados,

criam complexos fluxos de controle que

são difíceis de seguir em runtime.



De Classe



baseados no uso de herança



De Objeto

(8)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrões Comportamentais



Chain of Responsibility

- Encadeamento de

Atendentes



Command - Comando



Interpreter

-Interpretador



Iterator - Iterador



Mediator - Mediador



Memento - Lembrança



Observer - Observador



State - Estado



Strategy - Estratégia



Template Method

-Esqueleto de Método



Visitor - Visitante

(9)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrões Comportamentais



Chain of Responsibility - Encadeamento de

Atendentes

(Objeto) Evita acoplamento entre solicitantes e

atendentes permitindo que mais de um objeto tenha chance de

tratar da solicitação. Encadeia os atendentes e passa a solicitação

através desta cadeia até que algum deles a trate.



Command - Comando

(Objeto) Encapsula uma solicitação no

interior de um objeto, permitindo que se parametrize clientes com

diferentes solicitações, filas ou registros de solicitações, suportando

ainda o cancelamento de solicitações.



Interpreter - Interpretador

(Classe) Dada uma linguagem,

cria uma representação para a gramática da linguagem, juntamente

com um interpretador que utilizar esta representação para

(10)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrões Comportamentais



Iterator - Iterador

(Objeto) Provê uma forma de acessar

seqüencialmente os elementos de um agregado de objetos, sem

expor a representação interna deste agregado.



Mediator - Mediador

(Objeto) Define um objeto que encapsula

o modo como um conjunto de objetos interage. Promove um

acoplamento fraco entre objetos, evitando que referenciem

diretamente um ao outro e permitindo que se possa variar a

interação entre eles de modo independente.



Memento - Lembrança

(Objeto) Sem violar encapsulamento,

captura e armazena externamente o estado de um objeto, de modo

que o estado anterior de um objeto possa ser posteriormente

(11)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrões Comportamentais



Observer - Observador

(Objeto) Define uma dependência

1-para-n entres objetos, de modo que quando o estado de um objeto

é alterado todos seus dependentes são notificados e atualizados

automaticamente.



State - Estado

(Objeto) Permite que um objeto altere seu

comportamento quando seu estado interno se modifica. O objeto

parecerá ter mudado de classe.



Strategy - Estratégia

(Objeto) Define uma família de

algoritmos, encapsula cada um, e os faz inter-cambiáveis. Permite

que o algoritmo varie independentemente dos clientes que o

(12)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrões Comportamentais



Template Method - Esqueleto de Método

(Classe)

Define o esqueleto de um algoritmo através de uma operação,

deixando que subclasses refinem o restante do algoritmo.

Permitem que subclasses redefinam certos aspectos de um

algoritmo sem modificar a estrutura do algoritmo.



Visitor - Visitante

(Objeto) Representa uma operação a ser

executada sobre os elementos da estrutura de um objeto.

Visitantes permitem que se definam novas operações sem

modificar as classes dos elementos sobre as quais ele atua.

(13)

Chain of Responsibility

ChainOf

Responsibility

(14)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Chain of Responsibility



Intenção



Evita acoplamento entre solicitantes e atendentes permitindo

que mais de um objeto tenha chance de tratar da solicitação.

Encadeia os atendentes e passa a solicitação através desta

cadeia até que algum deles a trate.



Motivação



Considere, por exemplo, a construção de um conjunto de helps

(auxílios) em uma GUI.



Suponha que o usuário possa obter auxílio a partir de qualquer parte

da interface pressionnando, F1. O help deve então ser sensível ao

contexto onde foi ativado.



Nestes casos torna-se natural criar vários níveis de auxílio, se aplicando

da situação mais específica à mais geral.



Quando o contexto mais específico não dispuser de auxílio, o contexto

de auxílio imediatamente superior deve ser ativado.



A idéia do padrão é facilitar o desacoplamento entre o solicitante

(15)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Client

Handler

handleRequest()

ConcreteHandler2

handleRequest()

Padrão

Chain of Responsibility

Estrutura e Participantes

ConcreteHandler1

handleRequest()

(16)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Chain of Responsibility

Aplicabilidade



Use o Padrão quando:



Mais de um objeto pode tratar de um pedido, e o tratador de

pedidos (handler) não é conhecido a priori. O handler deve ser

buscado automaticamente de forma ascendente.



Você quer emitir um pedido para um de vários objetos sem

especificar o recebedor de forma explícita.



O conjunto de objetos que pode tratar de um pedido deve ser

configurado dinamicamente.

(17)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Chain of Responsibility

Conseqüências



Acoplamento reduzido



Evita que um objeto (client) seja forçado a tomar conhecimento

do outro (handler)



O objeto só precisa saber que o pedido foi tratado

apropriadamente



A estrutura da cadeia não precisa ser conhecida



Flexibilidade na atribuição de responsabilidades para

objetos (subclasses, alteração dinâmica da cadeia)

(18)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Chain of Responsibility

Exercícios



Observe os trechos de código das próximas 2 páginas e

veja como funciona a Chain of Responsibility do

tratamento de eventos no AWT 1.0.



Veja também detalhes do código fonte das classes

Component

(19)

Class Component {

..

public boolean postEvent(Event e) {

if (handleEvent(e)) {

e.consume();

return true;

}

Component parent = this.parent;

...

if (parent != null) { ...

if (parent.postEvent(e)) {

e.consume();

return true;

}

}

return false;

}

}

(20)

public class BancoApplet extends Applet {

Button clientesButton, contasButton, crediteButton, debiteButton;

public boolean handleEvent(Event evt) {

if (evt.id == Event.ACTION_EVENT) {

if (evt.target == clientesButton) {

...

} else if (evt.target == contasButton) {

...

} else if (evt.target == crediteButton) {

...

} else if (evt.target == debiteButton) {

...

}

} else {

return super.handleEvent(evt);

}

}

}

(21)

Command

exec

Command

new

(22)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Command



Intenção



Encapsula uma solicitação no interior de um objeto, permitindo que se

parametrize clientes com diferentes solicitações, filas ou registros de

solicitações, suportando ainda o cancelamento de solicitações.



Motivação



Algumas vezes é necessário se fazer uma solicitação de serviço

sem conhecimento algum do tipo de operação que está sendo

requerida.



Na construção de um menu, por exemplo.



O padrão Command permite que um menu possa solicitar

execução de pedidos sem conhecer a natureza destes pedidos,

pois o próprio objeto encapsula os detalhes da execução do

pedido.

(23)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

receiver.action();

Client

Receiver

action()

ConcreteCommand

execute()

Command

execute()

Padrão

Command

Estrutura e Participantes

state

Invoker

receiver

(24)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Command

Colaborações

anInvoker

aCommand

aClient

aReceiver

aCommand = new Command

StoreCommand(aCommand)

execute()

action()

(25)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Command

Aplicabilidade



Parametrizar objetos com uma ação a executar.



Tal parametrização pode ser feita com funções de callback em

linguagens imperativas. Comandos são um substituto orientado a

objetos para callbacks.



Especificar, armazenar e executar pedidos em

momentos diferentes.



Commands podem ser transferidos entre espaços de endereçamento e

máquinas.



Suportar undo



A operação execute pode armazenar o estado para reverter os efeitos

do próprio comando.



Suportar ‘logs’ de modificações



Através da inclusão de undoable Commands em meio persistente.



Estruturar um sistema em torno de operações de alto

nível



Constituídas internamente por várias operações primitivas. Facilidades

para extensão do sistema.

(26)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Command

Conseqüências



Desacoplamento do objeto que invoca uma operação,

do outro que executa esta operação



Comandos são objetos, e como tal podem ser

manipulados e refinados.



Comandos podem ser compostos, criando

MacroCommands

(27)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Command

Exercícios



Veja a capacidade de suporte à implementação dinâmica

do padrão Command dentro dos pacotes java.lang e

java.lang.reflect



Class java.lang.Class

Method[] getMethods();



Classe java.lang.reflect.Method

Object invoke(Object target, Object[] args);

(28)

Interpreter

Interpreter

&

|

b

c

a

*

(29)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão Interpreter



Intenção



Dada uma linguagem, cria uma representação para a gramática da

linguagem, juntamente com um interpretador que utilizar esta

representação para interpretar sentenças na linguagem.



Motivação



Quando uma estrutura de problema particular ocorre várias vezes,

pode ser interessante representá-la através de uma sentença em uma

linguagem simples, de modo a solucionar o problema através da

construção de um interpretador para esta sentença.



Em várias destas situações, em vez de construir algoritmos de

interpretação manualmente, um interpretador genérico de expressões

regulares pode solucionar o problema rapidamente.



O padrão Interpreter usa classes para representar cada regra de uma

gramática (expressão regular).

(30)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Interpreter

Aplicabilidade



Use o Padrão quando:



A gramática é simples

Para gramáticas complexas a hierarquia de classes se torna difícil

de gerenciar. Neste caso, geradores de parsers são uma alternativa

melhor.



Eficiência não é uma questão crítica

Código intermediário permite maior eficiência

Expressões podem ser traduzidas para máquinas de estado finito

(31)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Interpreter

Conseqüências



É fácil modificar e estender a gramática



Implementar a gramática também é fácil



Gramáticas complexas são difíceis de manter



Adicionar novas formas de interpretar expressões é

simples

(32)

Iterator

(33)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Iterator (Cursor)



Intenção



Provê uma forma de acessar seqüencialmente os elementos de um

agregado de objetos, sem expor a representação interna deste

agregado.



Motivação



Objetos agregados como listas, tabelas hash, dicionários, etc,

devem permitir que se acessem seus elementos de modo

abstrato, sem que a representação interna de sua estrutura seja

exposta



Eventualmente também pode se desejar fazer duas travessias

concorrentes sobre um mesmo objeto agregado.

(34)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Return new ConcreteIterator(this);

Client

Aggregate

createIterator()

ConcreteAggregate

createIterator()

Padrão

Iterator

Estrutura e Participantes

Iterator

first()

next()

isDone()

currentItem()

ConcreteIterator

(35)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Iterator

Aplicabilidade



Use o Padrão Iterator quando:



Se deseja acessar o conteúdo de um objeto agregado sem

expor sua representação interna



Se deseja suportar múltiplas travessias de um objeto agregado



Se quer prover uma interface uniforme para atravessar

(36)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Iterator

Conseqüências



Suporte a variações na maneira de se atravessar um

objeto agregado (pre-order, pós-ordem, em-ordem)



Simplificação da interface do agregado

(37)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Iterator

Exercícios



Observar o uso de agregados no pacote java.util.



JDK 1.1 - Hashtable, Vector, Enumeration



JDK 1.2 - Collection, Iterator

Hash Table Resizable Array Balanced Tree Linked List

HashSet TreeSet

ArrayList

LinkedList

HashMap TreeMap

Set

List

Map

IMPLEMENTAÇÕES - JDK 1.2

INTERF

A

C

ES

(38)

Mediator

(39)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Mediator



Intenção



Define um objeto que encapsula o modo como um conjunto de objetos

interage. Promove um acoplamento fraco entre objetos, evitando que

referenciem diretamente um ao outro e permitindo que se possa variar

a interação entre eles de modo independente.

(40)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Mediator

(41)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Mediator

Aplicabilidade

(42)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Mediator

(43)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Mediator

(44)

Memento

(45)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Memento



Intenção



Sem violar encapsulamento, captura e armazena externamente o

estado de um objeto, de modo que o estado anterior de um objeto

possa ser posteriormente restaurado.

(46)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Memento

(47)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Memento

Aplicabilidade

(48)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Memento

(49)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Memento

(50)

Observer

Observer(s)

30%, 20%, 50%

30%, 10%, 60%

(51)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão Observer



Intenção



Define uma dependência 1-para-n entres

objetos, de modo que quando o estado de

um objeto é alterado todos seus dependentes

são notificados e atualizados

(52)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Observer

Motivação



Suponha que você deseja fornecer várias visões

distintas de um mesmo objeto que funciona como um

repositório de dados



Cada visão é criada por um objeto observador

independente



Caso cada observador seja diretamente conectado ao

repositório, isto criará uma dependência do repositório

com relação aos diferentes observadores, o que lhe

reduzirá a reusabilidade e flexibilidade



O padrão Observer descreve uma forma de manutenção

destes relacionamentos de modo que observadores e

repositórios sejam facilmente substituídos

(53)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Observer

Estrutura e Participantes

return subjectState

Subject

attach(Observer)

Observer

update()

detach(Observer)

notify()

For all o in observers {

o.update();

}

observerState =

subject.getState();

ConcreteSubject

getState()

subjectState

ConcreteObserver

update()

observerState

subject

observers

(54)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Observer

Aplicabilidade



Use o Padrão Observer em Algumas das Situações:



Quando uma abstração apresenta dois aspectos, um

dependente do outro. Encapsulando estes aspectos em objetos

separados permite que você os varie e reutilize de forma

independente



Quando uma modificação em um objeto requer modificação em

outros, e você não sabe (em tempo de programação) quantos

objetos precisam ser modificados



Quando um objeto deve ser apto a notificar outros objetos sem

saber quem são estes objetos. Em outras palavras, quando você

os quer fracamente acoplados

(55)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Observer

Conseqüências



Variação independente de observáveis e

observadores



É fácil adicionar observadores sem

modificar o observável ou os outros

observadores



Suporte a comunicação broadcast



Atualizações inesperadas (caso o processo

de notificação seja simplificado)

(56)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Observer

Exercícios



Veja a implementação do padrão observer nos

componentes do pacote AWT



Destaque as diferenças entre o padrão original e a

implementação do AWT

(57)

State

(58)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

State



Intenção



Permite que um objeto altere seu comportamento quando seu estado

interno se modifica. O objeto parecerá ter mudado de classe.

(59)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

State

(60)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

State

Aplicabilidade

(61)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

State

(62)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

State

(63)

Strategy

(64)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Strategy



Intenção



Define uma família de algoritmos, encapsula cada um, e os faz

inter-cambiáveis. Permite que o algoritmo varie independentemente dos

clientes que o utilizam.

(65)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Strategy

(66)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Strategy

Aplicabilidade

(67)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Strategy

(68)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Strategy

(69)

Template Method

a() b()

a()

b()

TemplateMethod()

a(..);

...

b(..);

(70)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Template Method



Intenção



Define o esqueleto de um algoritmo através de uma operação,

deixando que subclasses refinem o restante do algoritmo. Permitem

que subclasses redefinam certos aspectos de um algoritmo sem

modificar a estrutura do algoritmo.

(71)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Template Method

(72)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Template Method

Aplicabilidade

(73)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Template Method

(74)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Template Method

(75)

Visitor

(76)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Visitor



Intenção



Representa uma operação a ser executada sobre os elementos da

estrutura de um objeto. Visitantes possibilitam a definição de novas

operações sem modificar as classes dos elementos sobre as quais ele

atua.

(77)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Visitor

(78)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Visitor

Aplicabilidade

(79)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Visitor

(80)

Padrões de Design Orientados a Objetos. Copyright © 1999, 2003. Jorge H. C. Fernandes. ([email protected])

Padrão

Visitor

(81)

State

Memento

Adapter

Proxy

Bridge

Command

Chain of

Responsibility

Singleton

Abstract Factory

Prototype

Template Method

Facade

Factory Method

Observer

Mediator

Strategy

Decorator

Flyweight

Composite

Interpreter

Visitor

Iterator

Builder

Uma Linguagem de Padrões para Programas OO

Adicionando

Operações

Adicionando

Operações

Enumerando

Filhos

Salvando

Estado da Operação

Criando

Composições

Adicionando

Responsabilidades

a Objetos

Modificando Pele

versus Entranhas

Compartilhando

Composições

Definindo

Gramática

Definindo

Travessias

Definindo

a Cadeia

Composto

Usando

Evitando

Histerese

Compartilhando

Estratégias

Compartilhando

Estados

Compartilhando

Terminais

Configurar

Fábrica

Dinamicamente

Única

Instância

Única

Instância

Implementada

Usando

Gerenciamento

Complexo de

Dependências

Freqüentemente Usa

Definindo

Passos do

Algoritmo

(82)

Referências

Documentos relacionados