Dans le livre original qui a inventé les termes de l'Observateur et de Médiateur, Modèles de Conception, des Éléments de Logiciels Orientés Objets Réutilisables, il est dit que le Médiateur modèle peut être mis en œuvre en utilisant le pattern observer. Mais il peut aussi être mis en œuvre par avoir des Collègues (qui sont à peu près équivalent pour les Sujets de l'Observateur modèle) ont une référence à un Médiateur de la classe ou d'un Médiateur de l'interface.
Il existe de nombreux cas où vous souhaitez utiliser le pattern observer, ils clé est qu'un objet ne doit pas savoir ce que les autres objets sont l'observation de l'état.
Médiateur est un peu plus précis, il évite d'avoir des classes de communiquer directement, mais plutôt par l'intermédiaire d'un médiateur. Cela aide le principe de Responsabilité Unique, en permettant la communication pour être déchargées à une classe qui vient s'occupe de la communication.
Un classique Médiateur exemple est dans une interface graphique, où l'approche naïve pourrait conduire à un code sur un bouton, cliquez sur l'événement en disant: "si les Foo panneau est désactivé et le panneau de la Barre a une étiquette indiquant "Veuillez entrer la date", puis ne pas appeler le serveur, sinon, aller de l'avant", où, avec le Médiateur modèle, il pourrait dire "je suis juste un bouton et n'ont pas d'terrestre entreprise connaître les Foo panneau et l'étiquette sur le panneau de la Barre, donc je vais juste demander à mon médiateur si vous appelez le serveur est O. K., maintenant."
Ou, si le Médiateur est mis en œuvre en utilisant le pattern observer le bouton dit "Hey, les observateurs (qui pourrait inclure le médiateur), mon état modifié (quelqu'un a cliqué sur moi). Faire quelque chose à ce sujet si vous avez des soins". Dans mon exemple, que, probablement, moins de sens alors directement le référencement du médiateur, mais dans de nombreux cas en utilisant le pattern observer pour mettre en œuvre Médiateur aurait du sens, et la différence entre l'Observateur et le Médiateur serait plus un d'intention que d'une différence dans le code lui-même.