MAC 441/5714 - Programação Orientada a Objetos
Aula 19 - 25/5/2004
Padrões de Projeto de Software - continuação
dos padrões do GoF
Referência principal da aula de hoje
- Slides
do curso de padrões dado pelo Joe Yoder em 2003
- Página
dos cursos dados pelo Joe Yoder incluindo
o vídeo das palestras!
Template Method (325) - Behavioral
- no exemplo do Yoder note como o View "obriga" suas subclasses a
sempre chamar o setFocus
antes e o resetFocus
depois.
Composite (163)
- exemplo do Yoder: contêiners de Java
Singleton (127) - Creational
- em alguns casos queremos ter apenas uma instância de uma
classe
- um SO tem apenas 1 Window Manager
- um sistema de folha de pagamento cuida de apenas 1 empresa
- um sistema de matrícula cuida de apenas 1 universidade
- um jogo de xadrez possui apenas 1 tabuleiro
- etc., etc.
- queremos também que essa instância seja facilmente
acessível de qualquer ponto
- alternativas (ruins)
- variável global
- classe cheia de métodos estáticos
- solução
- Singleton: a própria classe é responsável
por gerenciar sua única instância
State (305) - Behavioral
- quando usamos o State, parece que o objeto "muda de classe"
à medida em que seu estado muda.
- exemplo do GoF: TCPConnection
cujo estado pode ser TCPEstablished,
TCPListen ou TCPClosed.
Façade (185) - Structural
- descrição do Joe é muito sucinta, ver
também GoF (185..193)
- exemplo do sistema operacional Choices no GoF é bem interessante (pag. 192)
Mediator (273) - Behavioral
Moral da História: proteção contra
mudanças
- Se algo no sistema provavelmente vai mudar, faça dele um
objeto
- Strategy:
mudança de um algoritmo
- State:
mudança de comportamento
- Iterator:
mudança da forma de se percorrer os elementos de uma
coleção
- Façade:
mudanças em subsistemas
- Mediator:
mudança nas interações entre objetos
- Factory:
mudança nos produtos que são gerados
Referências GoF online
- Vários lugares da Web contém uma
documentação muito boa sobre os padrões GoF.
- Veja por exemplo:
Próxima Aula
Aula
Anterior
Página de MAC 441/5714
Página do Fabio
Página do DCC