ID 425140 Banca COPEVE-UFAL Órgão UFAL Ano 2011 Provas COPEVE-UFAL - 2011 - UFAL - Analista de Tecnologia da Informação Disciplina Arquitetura de Software Assuntos Padrões de projeto (Design Patterns) O padrão Observer Alternativas usa os gerenciadores de layout predefinidos para controlar a interface gráfica. usa o conceito de ouvintes (listeners) para notificá-los quando algo acontece a sua fonte de eventos (um botão por exemplo). provê o serviço publish/subscribe de notificação entre objetos. usa a arquitetura “modelo-visão-controlador” para manter a consistência entre várias visões de um mesmo objeto. é utilizado para a representação gráfica de um objeto. Responder Comentários a) usa os gerenciadores de layout predefinidos para controlar a interface gráfica.(errado) Não tem ligação com GUI. b) usa o conceito de ouvintes (listeners) para notificá-los quando algo acontece a sua fonte de eventos (um botão por exemplo). (errado) O padrão observer prega o uso do grasp low coupling, ou seja, objetos levemente ligados, interagem, mas conhecem muito pouco um do outro. O uso de listeners quebraria esse princípio, pois insere uma ligação mais forte. Os objetos tipo observer não são listeners. O relacionamento entre estes objetos (observer) e o objeto que notifica alteração de seu estado (subject) é de agregação. Não há um evento para listeners capturar. Outro princípio que é notado no padrão observer e que os listeners violam é o de hollywood (Don't call us, we'll call you), reforçando assim o conceito do baixo acoplamento. No link, abaixo há um bom exemplo do observer implementado em java. http://java-x.blogspot.com/2007/01/implementing-observer-pattern-in-java.html c) provê o serviço publish/subscribe de notificação entre objetos. (correto) Observer: Define uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente." [GoF] Quando vocês está tentando retratar o Padrão Observer, um serviço de assinatura de jornais com sua editora e seus assinantes (publish/subscribe) é uma boa maneira de visualizar o padrão. Use a Cabeça: Padrões de projeto d) usa a arquitetura “modelo-visão-controlador” para manter a consistência entre várias visões de um mesmo objeto.(errado) O padrão observer pode ser inserido em um contexto maior que faz uso do MVC mas ele mesmo não utiliza essa arquitetura, pois como dito acima sua arquitetura é baseada no publish/subscribe, ou seja um escreve e vários lêem. e) é utilizado para a representação gráfica de um objeto.(errado) Não tem ligação com GUI.