Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Eu não consegui identificar o Padrão Observer nesta Aula

Ao ler o livro Design Patterns do GOF sobre o padrão Observer tenho:

Definir uma dependência um para muitos entre objetos, de maneira que quando um objeto muda de estado todos os seus dependentes são notificados e atualizados automaticamente

Durante a explicação da aula que já é feita em cima do contexto do padrão Builder e torna confusa a identificação e intenção do padrão Observer não consigo relacionar o conceito acima com a explicação, de modo que o padrão explicado no vídeo não parece ser o padrão Observer. Não é possível sequer identificar os participantes do padrão (subject, observer, concreteSubject,ConcreteObserver) nesta explicação, se perde muito tempo demonstrando o Builder que já compreendi e questões de refatoração que para padrões são gerais como diminuir o acoplamento e aumentar a coesão o Observer passa muito batido, sendo que a compreensão final do padrão é de que observadores são ações que devem ser executadas após um comportamento, não foi falado nem da possibilidade de como fazer o registro para obter as mudanças do objeto e nem o cancelamento dessa inscrição. Então eu sugiro que seja adicionado um material de Apoio a esse padrão ou então uma revisão dessa aula. Que de fato não parece ter relação com o padrão, se eu estiver equivocado me ajudem a perceber. Desde já agradeço.

3 respostas

Oi Maison, tudo bem? A implementação do padrão não precisa ser totalmente by the book como documentado pelo GOF. Você pode ter uma implementação parcial, dependendo do contexto.

Não será em todos os casos que você precisará de um cancelamento da inscrição no evento, por exemplo.

O exemplo define um contexto que é: algumas ações precisam ser executadas em um determinando momento e a parcialidade do Observer entra ai.

Claro, há espaço para implementações mais complexas, mas isso depende muito do contexto e da necessidade.

Contudo, eu concordo com você que um material de apoio com uma variação de implementação pode ser adicionada à aula.

Oi Wanderson tudo bom, obrigado por dar um retorno já fazia um mês..., eu concordo que a implementação não precisa ser igual a do livro até porque padrões não tratam de implementações e sim de abstrações e o livro foi publicado em Smalltalk, a um bom tempo..., o meu ponto é o padrão tem uma característica, eu fico observando um objeto e quando o estado dele muda eu sou notificado, e com essa notificação eu posso tomar uma ação como foi demonstrado no vídeo, porém a demonstração desse padrão sem falar das características marcantes dele como a inscrição para observar o objeto, o modo como ele notifica os observadores e o cancelamento que não necessariamente vai estar em todos os contextos(concordo), mas que acho importante ser destacado foi que na minha opinião deixou ele muito vazio, ao final o que se pode concluir é que ele esta relacionado a uma sequencia de ações a serem executadas e ao meu ver a intenção do padrão não é essa, e sim a abstração de observar o objeto e ser notificado ou não das mudanças dele.

O outro ponto é que como a explicação vem no cenário do padrão Builder do capítulo anterior acaba que grande parte da aula está ainda mostrando abstrações do Builder e não do Observer o que dificultou mais ainda. A minha sugestão era de que fosse revisto esses dois pontos desse padrão em especifico porque eu fiz o curso inteiro e somente nesse detectei essa questão.

Como material de apoio eu utilizei este site que tem uma boa explicação sobre o padrão quando olho a explicação do padrão e olho pro vídeo vejo que a parte do vídeo por esses pontos deixa a desejar.

Por isso acho interessante e propus que fosse adicionado um material de apoio explicando esses pontos.Pois se não tivesse pulado para o próximo padrão teria desistido.

solução!

Acho muito boas as suas colocações Maison, concordo plenamente. E esse curso está em padrões mais antigos da Alura. Realmente, se fosse para ser feito hoje em dia, teria sido bem diferente.

Gostei do link que passou. Deixei anotado aqui para futuras consultas.

Acho que a gente pode aproveitar o seu Link e adicionar como atividade Extra. Vai ajudar bastante gente.

Obrigado pelas colocações Maison :)