Voici mon point de vue sur les trois:
Liaison de données
Essentiellement, cela signifie simplement que «la valeur de la propriété X sur l'objet Y est sémantiquement liée à la valeur de la propriété A sur l'objet B.
Observateur, ou observable / observateur
Un modèle de conception par lequel un objet est imprégné de la capacité d'avertir les autres d'événements spécifiques - généralement effectué à l'aide d'événements réels, qui sont un peu comme des emplacements dans l'objet avec la forme d'une fonction / méthode spécifique. L'observable est celui qui fournit les notifications, et l'observateur reçoit ces notifications. Dans .net, l'observable peut exposer un événement et l'observateur s'abonne à cet événement avec un crochet en forme de "gestionnaire d'événements". Aucune hypothèse n'est faite sur le mécanisme spécifique des notifications, ni sur le nombre d'observateurs qu'une observable peut notifier.
Pub / Sub
Un autre nom (peut-être avec une sémantique plus "broadcast") du modèle Observable / Observer, qui implique généralement une saveur plus "dynamique" - les observateurs peuvent s'abonner ou se désabonner aux notifications et un observable peut "crier" à plusieurs observateurs. Dans .NET, on peut utiliser les événements standard pour cela, car les événements sont une forme de MulticastDelegate, et peuvent donc prendre en charge la livraison d'événements à plusieurs abonnés, ainsi que la désinscription. Pub / Sub a une signification légèrement différente dans certains contextes, impliquant généralement plus d '"anonymat" entre l'événement et l'événementiel, ce qui peut être facilité par un certain nombre d'abstractions, impliquant généralement un "intermédiaire" (comme une file d'attente de messages) qui sait tout parties, mais les parties individuelles ne se connaissent pas.
Liaison de données, Redux
Dans de nombreux modèles de type «MVC», l'observable expose une sorte de «notification de modification de propriété» qui contient également des informations sur la propriété spécifique modifiée. L'observateur est implicite, généralement créé par le framework, et souscrit à ces notifications via une syntaxe de liaison pour identifier spécifiquement un objet et une propriété, et le "gestionnaire d'événements" copie simplement la nouvelle valeur dessus, déclenchant potentiellement toute logique de mise à jour ou d'actualisation.
Liaison de données concernant Redux
Une implémentation alternative pour la liaison de données? Ok, en voici une stupide:
- un thread d'arrière-plan est démarré qui vérifie constamment la propriété liée sur un objet.
- si ce thread détecte que la valeur de la propriété a changé depuis la dernière vérification, copiez la valeur dans l'élément lié.