У плутанині є два основні поняття: прив'язка та завантаження. Це пов'язане з концепцією DataBinding, яка десь в середині часто робить і те, і інше. Розглянувши це, я збираюся додати ще одну концепцію, завершити трифекти, відправити.
Типи
Пізнє прив'язування : тип невідомий, поки змінна не виконується під час виконання; зазвичай через присвоєння, але є й інші способи примусити тип; динамічно типізовані мови називають це основної особливістю, проте багато мов, що мають статичний тип, мають певний метод досягнення пізнього зв’язування
Часто реалізується з використанням [спеціальних] динамічних типів, самоаналізу / відображення, прапорів та параметрів компілятора або за допомогою віртуальних методів шляхом запозичення та розширення динамічної відправки
Рання прив'язка : тип відомий перед тим, як змінна виконується під час виконання, як правило, за допомогою статичних, декларативних засобів
Реалізується часто з використанням стандартних примітивних типів
Функції
Статична відправка : відома, конкретна функція або підпрограма під час компіляції; вона однозначна і узгоджується підписом
Реалізується як статичні функції; жоден метод не може мати однаковий підпис
Динамічна відправка : не конкретна функція або підпрограма під час компіляції; визначається контекстом під час виконання. Існує два різних підходи до "динамічної диспетчеризації", що відрізняються тим, яка контекстна інформація використовується для вибору відповідної реалізації функції.
В одиночній [ динамічній ] відправці для визначення відповідної реалізації функції використовується тільки тип екземпляра. У мовах статичного типу, що це означає на практиці, це те, що тип екземпляра вирішує, яка реалізація методу використовується незалежно від типу посилання, зазначеного при оголошенні / призначенні змінної. Оскільки для одержання відповідної реалізації використовується лише один тип - тип об’єкта об'єкта - такий підхід називається "разова відправка".
Існує також декілька [ динамічних ] відправлень , де типи вхідних параметрів також допомагають визначити, яку функцію виконувати. Оскільки кілька типів - як тип екземпляра, так і тип (и) параметрів (и) - впливають на те, який спосіб вибору обраний, цей підхід називається "багаторазовою відправленням".
Реалізується як віртуальна або абстрактна функції; інші підказки включають перекриті, приховані або затінені методи.
Примітка: Незалежно від того, чи передбачає перевантаження методу динамічне відправлення, залежить від мови. Наприклад, у Java перевантажені методи статично відправляються.
Цінності
Ледаче завантаження : стратегія ініціалізації об'єкта, яка відкладає призначення значення до необхідності ; дозволяє об’єкту бути фактично дійсним, але свідомо неповним станом і чекати, поки дані будуть потрібні перед завантаженням; часто виявляється особливо корисним для завантаження великих наборів даних або очікування на зовнішніх ресурсах
Часто реалізується шляхом цілеспрямованого завантаження колекції чи списку в складений об'єкт під час конструктора або ініціалізації викликів, поки хтось, хто викликає низхідний потік, не попросить переглянути вміст цієї колекції (наприклад, get_value_at, get_all_as тощо). Варіанти включають завантаження метаінформації про колекцію (наприклад, розмір або клавіші), опускаючи фактичні дані; також надає механізм для деяких періодів виконання, щоб забезпечити розробників досить безпечною та ефективною схемою впровадження одиночних програм
Eager Loading : стратегія ініціалізації об'єкта, яка негайно виконує всі присвоєння значень для того, щоб всі дані, необхідні для завершення, перед тим, як вважати себе в дійсному стані.
Часто реалізується шляхом надання якомога швидше складених об'єктів з усіма відомими їм даними, наприклад, під час виклику конструктора або ініціалізації
Прив'язка даних : часто включає створення активного зв’язку або карти між двома сумісними інформаційними потоками, щоб зміни в одному відображалися назад в інший і навпаки; щоб бути сумісними, вони часто повинні мати загальний базовий тип або інтерфейс
Часто реалізується як спроба забезпечити більш чітку, послідовну синхронізацію між різними аспектами програми (наприклад, модель перегляду для перегляду, модель до контролера тощо) та розповідає про такі поняття, як джерело та ціль, кінцеві точки, прив'язування / відключення, оновлення та такі події, як on_bind, on_property_change, on_explicit, on_out_of_scope
РЕДАКЦІЯ ПРИМІТКА: Остання основна редакція, щоб дати опис прикладів того, як вони часто трапляються. Конкретні приклади коду повністю залежать від реалізації / часу виконання / платформи