Les observateurs espionnent des événements et s'enregistrent auprès d'un serveur qui fait l'intermédiaire avec les observés. Dans le schéma ci-dessous, on voit bien que la communication est asynchrone du fait que les messages passent par un ''publisher'' qui communique avec le serveur et c'est la méthode ''Forward'' qui envoie les messages aux ''subscriber''.
There are two major differences between Observer/Observable and Publisher/Subscriber patterns: * Observer/Observable pattern is mostly implemented in a synchronous way, i.e. the observable calls the appropriate method of all its observers when some event occurs. The Publisher/Subscriber pattern is mostly implemented in an asynchronous way (using message queue). * In the Observer/Observable pattern, the observers are aware of the observable. Whereas, in Publisher/Subscriber, publishers and subscribers don't need to know each other. They simply communicate with the help of message queues. [[http://stackoverflow.com/questions/15594905/difference-between-observer-pub-sub-and-data-binding|Difference between Observer, Pub/Sub, and Data Binding]], {{ :helloworld:design_pattern:publish_subscribe:model_view_controller_-_difference_between_observer_pub_sub_and_data_binding_-_stack_overflow_2020-03-02_22_19_49_.html |Archive du 24/03/2013 le 02/03/2020}}
===Utilisation avec le modèle MVC=== Les inscrits sont les différents composants de chaque vue et c'est le modèle qui publie les modifications aux inscrits. Cela rajoute donc une étape supplémentaire dans la communication du modèle vers la vue. [[http://howtodoinjava.com/scripting/implement-mvc-and-pubsub-in-javascript/|Implement MVC and PubSub in JavaScript]], {{ :helloworld:design_pattern:publish_subscribe:implement_mvc_and_pubsub_in_javascript_-_howtodoinjava_2020-03-02_22_18_13_.html |Archive le 02/03/2020}} {{:helloworld:design_pattern:publish_subscribe:uml.png|UML publisher subscriber}} [[https://www.youtube.com/watch?v=frGy-nGoGUY|Pub/Sub Design Pattern]], {{ :helloworld:design_pattern:publish_subscribe:pub_sub_design_pattern-frgy-ngoguy.mp4?linkonly |Archive du 12/04/2015 le 02/03/2020}} [[:helloworld:design_pattern:publish_subscribe:java|Java]]