Ось мій погляд на три:
Прив’язка даних
По суті, це по суті це просто означає, що "значення властивості X на об'єкті Y семантично пов'язане зі значенням властивості A" на об'єкті B. Не робиться жодних припущень щодо того, як Y знає або подається зміни на об'єкт B.
Спостерігач, або Спостережуваний / Спостерігач
Шаблон дизайну, за допомогою якого об'єкт пронизаний можливістю сповіщати інших про конкретні події - зазвичай це робиться за допомогою фактичних подій, які схожі на слоти в об'єкті у формі певної функції / методу. Спостерігаючий - це той, хто надає сповіщення, а спостерігач отримує ці сповіщення. У .net спостережуваний може викрити подію, і спостерігач підписується на цю подію гачком у формі "обробника подій". Ніяких припущень щодо конкретного механізму дії сповіщень не робиться, ні про кількість спостерігачів, які один спостережуваний може повідомити.
Паб / Під
Інша назва (можливо, з більшою кількістю «трансляційною» семантикою) шаблону «Спостережуваний / Спостерігач», що зазвичай передбачає більш «динамічний» аромат - спостерігачі можуть підписатись або скасувати підписку на сповіщення, а один спостережуваний може «викрикнути» декількома спостерігачами. У .NET, для цього можна використовувати стандартні події, оскільки події є формою MulticastDelegate, і тому вони можуть підтримувати доставку подій для декількох підписників, а також підтримувати підписку. Pub / Sub має дещо інше значення у певних контекстах, зазвичай передбачає більше "анонімності" між подією та вечором, що може бути полегшене будь-якою кількістю абстракцій, як правило, із залученням якогось "середнього чоловіка" (наприклад, черги повідомлень), який знає всіх партії, але окремі сторони не знають один про одного.
Прив'язка даних, Redux
У багатьох моделях, подібних до MVC, спостережувані виявляють певний спосіб "повідомлення про зміну властивості", який також містить інформацію про певну зміну властивості. Спостерігач неявний, зазвичай створюється рамкою, і підписується на ці сповіщення через якийсь прив'язуючий синтаксис, щоб спеціально ідентифікувати об'єкт і властивість, а "обробник подій" просто копіює нове значення, потенційно викликаючи будь-яку логіку оновлення або оновлення.
Зв'язування даних повторно
Альтернативна реалізація для прив'язки даних? Гаразд, ось дурний:
- запускається фонова нитка, яка постійно перевіряє пов'язане властивість на об'єкті.
- якщо цей потік виявляє, що значення властивості змінилося з часу останньої перевірки, скопіюйте це значення на прив'язаний елемент.