Oto moje podejście do trzech:
Wiązanie danych
Zasadniczo oznacza to po prostu, że „wartość właściwości X na obiekcie Y jest semantycznie związana z wartością właściwości A w obiekcie B. Nie są poczynione żadne założenia co do tego, w jaki sposób Y zna lub otrzymuje zmiany w obiekcie B.
Observer lub Observable / Observer
Wzorzec projektowy, za pomocą którego obiekt jest nasycony możliwością powiadamiania innych o określonych zdarzeniach - zwykle wykonywanych przy użyciu rzeczywistych zdarzeń, które są czymś w rodzaju szczelin w obiekcie o kształcie określonej funkcji / metody. Obserwowalny to ten, który dostarcza powiadomienia, a obserwator otrzymuje te powiadomienia. W .net, obserwowalne może ujawnić zdarzenie, a obserwator subskrybuje to zdarzenie za pomocą haka w kształcie „obsługi zdarzenia”. Nie poczyniono żadnych założeń co do konkretnego mechanizmu, w którym pojawiają się powiadomienia, ani co do liczby obserwatorów, których jeden obserwowalny może zgłosić.
Pub / Sub
Inna nazwa (być może z większą semantyką „rozgłoszeniową”) wzorca Observable / Observer, która zwykle sugeruje bardziej „dynamiczny” smak - obserwatorzy mogą subskrybować lub anulować subskrypcję powiadomień, a jeden obserwowalny może „krzyczeć” do wielu obserwatorów. W .NET można użyć do tego standardowych zdarzeń, ponieważ zdarzenia są formą MulticastDelegate, a więc mogą obsługiwać dostarczanie zdarzeń do wielu subskrybentów, a także obsługiwać anulowanie subskrypcji. Pub / Sub ma nieco inne znaczenie w pewnych kontekstach, zwykle wiąże się z większą „anonimowością” między zdarzeniem a zdarzeniem, co może być ułatwione przez dowolną liczbę abstrakcji, zwykle z udziałem jakiegoś „pośrednika” (takiego jak kolejka wiadomości), który wie wszystko imprezy, ale poszczególne strony nie wiedzą o sobie.
Wiązanie danych, redux
W wielu wzorcach „podobnych do MVC”, obserwowalne ujawniają pewien rodzaj „powiadomienia o zmianie właściwości”, które zawiera również informacje o zmianie określonej właściwości. Obserwator jest niejawny, zwykle tworzony przez strukturę i subskrybuje te powiadomienia za pomocą jakiejś składni powiązania, aby konkretnie zidentyfikować obiekt i właściwość, a „program obsługi zdarzeń” po prostu kopiuje nową wartość, potencjalnie wyzwalając jakąkolwiek aktualizację lub logikę odświeżania.
Wiązanie danych ponownie Redux
Alternatywna implementacja wiązania danych? Ok, oto głupi:
- uruchamiany jest wątek w tle, który stale sprawdza powiązaną właściwość obiektu.
- jeśli ten wątek wykryje, że wartość właściwości zmieniła się od czasu ostatniego sprawdzenia, skopiuj wartość do powiązanego elementu.