Ответ 1
Я не уверен в истории, но я предполагаю, что термин "привязка" в этом смысле возник из термина "привязка данных" . "привязка данных" действительно является действием: она заполняет элементы управления пользовательским интерфейсом значениями из фактических данных, модель AKA, например, когда поля в форме заполняются данными из базы данных и автоматически обновляются, используя шаблон Observer, как вы упомянули, Я думаю, что основное отличие от привязки - одностороннее и двустороннее: при двусторонней привязке данных пользовательский ввод также синхронизируется с моделью, а не только синхронизация данных от модели к виду.
"bind" - это глагол, а глагольная форма "привязки данных" будет "привязывать данные" или "выполнять привязку данных". Второй пример демонстрирует, что "привязка данных" также является существительным, которое может быть определено как "акт привязки свойств данных/модели к свойствам UI/view". Что касается существительной версии "привязки", я думаю, вы правы, что обычно это относится к индивидуальной привязке между двумя свойствами. Чтобы продемонстрировать это визуально, предположим, что точки представляют два свойства, которые связаны друг с другом:
• ----- •
"Связывание" здесь - это линия между ними.
Чтобы уточнить, односторонняя привязка может быть представлена одной стрелкой:
• ---- > •
И двусторонняя привязка с двумя стрелками:
• < --- >
"живое связывание" - это термин, который просто используется для указания того, что используется шаблон Observer. Мое предположение было бы в том, что желание отличить "привязку к жизни", вероятно, исходило от веб-разработчиков, которые ранее работали с фреймворками, где привязка данных происходила только один раз для HTTP-запроса, когда страница сначала загружалась. Теперь, когда Javascript-тяжелые веб-приложения становятся нормой (частично благодаря ajax), нет оснований не использовать шаблон Observer, как было предложено в первоначальном определении MVC, поэтому "живая привязка", вероятно, является ненужным термином в отношении RIA или родные настольные или мобильные приложения.
Как и в оригинале, Trygve Reenskaug оригинальное видение MVC (он его изобрел) в основном отражает отражение ментальной модели конечного пользователя в системе, так что "Модель" - это то, что пользователь почти манипулирует напрямую (или, по крайней мере, чувствует таким образом, пользователю). Таким образом, шаблон Observer (или, по крайней мере, некоторый механизм для сохранения модели и представления в синхронизации без перезагрузки страницы) имеет для этого существенное значение, а рамки веб-разработки, которые имеют большую часть кода на стороне сервера, на самом деле не MVC, как изначально задумывалось, но скорее вариант, который следует той же общей идее с точки зрения организации кода. Современные рамки Javascript для приложений на стороне клиента делают реальный MVC возможным для веб-разработки.
Вернемся к тому, что вы задали в своем вопросе, я думаю, вы также правы, когда говорите, что привязка не обязательно находится только между свойством model и свойством view; это может быть между двумя свойствами модели (обычно на разных моделях) или между двумя свойствами представления. Но я бы не согласился с вашим утверждением, что "привязка" является только существительным в отношении программирования - очевидно, на английском языке это существительное формы глагола "bind", другими словами "акт привязки", и я считаю, что действительный использование в программировании. Поэтому, по сути, я говорю о том, что он имеет двойной смысл, но я думаю, что определение, которое вы предложили, является наиболее распространенным. Здесь моя попытка формального определения:
Binding.
- Связь между двумя свойствами (обычно в двух разных объектах), которая сохраняет свойства в синхронизации друг с другом, т.е. имеет одинаковое значение. Синхронизация может быть либо однонаправленной, либо двунаправленной.
- Активация такого соединения.