DEV Community

Gustavo Inocencio
Gustavo Inocencio

Posted on

Diferenças entre Observer Pattern e Producer/Consumer Pattern

Normalmente essa é uma questão utilizada em uma entrevista técnica.
Mas afinal, existe diferença? Porque olhando superficialmente parecem o mesmo.
Começando com a definição do padrão Observer, existe um objeto chamado de subject que tem observadores e onde,para toda mudança nesse objeto os observadores são notificados. Nesse caso, a notificação é instantânea, em inglês chamada de "per object syncronization"
Para o padrão Producer/Consumer ou Publisher/Subscriber a única sincronização necessária é que o consumer fique aguardando quando não existem notificações no buffer e o Producer aguarde quando o buffer estiver cheio, mas a "per object syncronization" não é necessária. O Produtor (producer) pode gerar vários objetos de mudança antes que o consumidor (consumer) as consumam e este pode consumir tudo de uma vez. Enfim, para esse caso a notificação imediata não é necessária e o Producer não precisa saber quais são seus seguidores.

Discussion (0)