Aqui está a minha opinião sobre os três:
Ligação de dados
Essencialmente, no núcleo, isso significa apenas "o valor da propriedade X no objeto Y é semanticamente ligado ao valor da propriedade A no objeto B. Não são feitas suposições sobre como Y sabe ou é alimentado alterações no objeto B.
Observador ou Observável / Observador
Um padrão de design pelo qual um objeto é imbuído da capacidade de notificar outros sobre eventos específicos - normalmente feito usando eventos reais, que são como slots no objeto com a forma de uma função / método específico. O observável é quem fornece notificações e o observador recebe essas notificações. No .net, o observável pode expor um evento e o observador assina esse evento com um gancho em forma de "manipulador de eventos". Nenhuma suposição é feita sobre o mecanismo específico em que as notificações ocorrem, nem sobre o número de observadores que um observável pode notificar.
Pub / Sub
Outro nome (talvez com mais semântica de "transmissão") do padrão Observable / Observer, que geralmente implica um sabor mais "dinâmico" - os observadores podem assinar ou cancelar a assinatura de notificações e um observável pode "gritar" para vários observadores. No .NET, é possível usar os eventos padrão para isso, já que os eventos são uma forma de MulticastDelegate e, portanto, podem oferecer suporte a entrega de eventos para vários assinantes, além de oferecer suporte à cancelamento de assinatura. Pub / Sub tem um significado ligeiramente diferente em certos contextos, geralmente envolvendo mais "anonimato" entre evento e evento, o que pode ser facilitado por qualquer número de abstrações, geralmente envolvendo algum "intermediário" (como uma fila de mensagens) que conhece tudo partes, mas as partes individuais não se conhecem.
Ligação de dados, Redux
Em muitos padrões "do tipo MVC", o observável expõe algum tipo de "notificação de alteração de propriedade" que também contém informações sobre a propriedade específica alterada. O observador está implícito, geralmente criado pela estrutura, e assina essas notificações por meio de alguma sintaxe de ligação para identificar especificamente um objeto e propriedade, e o "manipulador de eventos" apenas copia o novo valor, potencialmente acionando qualquer lógica de atualização ou atualização.
Ligação de dados re Redux
Uma implementação alternativa para ligação de dados? Ok, aqui está uma pergunta estúpida:
- é iniciado um encadeamento em segundo plano que verifica constantemente a propriedade vinculada em um objeto.
- se esse encadeamento detectar que o valor da propriedade foi alterado desde a última verificação, copie o valor para o item vinculado.