PAdrão Observer
Thiago José Gomes Oliveira
Rivo Leonardo Alves Sarmento
Ciência da Computação
Motivação
...
DEFINIÇÃO FORMAL
O Padrão Observer define uma dependência um-para-muitos entre os objetos de modo que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente. Estrutura
Exemplo
Weather – Condições Climáticas
Problemas?
Problemas?
Implementação do Padrão Observer
Vantagem
• Pode reutilizar Sujeitos sem reutilizar os seus observadores e vice-versa;
• Os Observadores podem ser adicionados sem modificar o Sujeito;
• Todo sujeito conhece a sua lista de
Observadores;
• O Sujeito não precisa conhecer a classe concreta de um observador, apenas que cada observador implementa a interface update();
Desvantagem
• Usar este padrão de forma indiscriminada pode causar sério impacto na performance do sistema. Quando todos notificam todos a cada mudança, o sistema acaba ficando inundado de requisições, o que poderá levar a um desempenho mais lento.
Quando usar o Padrão Observer?
• Quando uma modificação do estado de um objeto implica modificações em outros objetos; • Quando um objeto deve ser capaz de notificar outros objetos, mas sem pressupostos sobre os objetos a serem notificados;
• Quando uma abstração possuir dois aspectos e um depende do outro;
Referências
• Eric Freeman, Elisabeth Robson, Bert Bates,
Kathy Sierra. Head First Design Patterns.
O'Reilly Media, 2004.
• Erich Gamma, Richard Helm, Ralph Johnson,
John Vlissides. Padrões de Projeto - Soluções
Reutilizaveis de Software Orientado a Objetos.
Porto Alegree: Bookman, 2000.