Поделиться через


Интерфейс IDynamicConceptProviderConcept (dbgmodel.h)

Если клиент хочет взять на себя хранилище ключей и значений для объекта, он может реализовать этот интерфейс концепции.

Объект является динамическим поставщиком ключей и хочет взять на себя все ключевые запросы из основной модели данных. Этот интерфейс обычно используется в качестве моста к динамическим языкам, таким как JavaScript.

Наследство

IDynamicConceptProviderConcept наследует от IUnknown.

Методика

Интерфейс IDynamicConceptProviderConcept имеет эти методы.

 
IDynamicConceptProviderConcept::AddRef

Метод IDynamicConceptProviderConcept::AddRef увеличивает число ссылок для интерфейса объекта.
IDynamicConceptProviderConcept::GetConcept

Метод GetConcept для динамического поставщика концепций является фактически переопределением метода GetConcept в IModelObject.
IDynamicConceptProviderConcept::NotifyDestruct

Метод NotifyDestruct для динамического поставщика концепций — это обратный вызов, сделанный основной моделью данных в начале уничтожения объекта, который является динамическим поставщиком концепции.
IDynamicConceptProviderConcept::NotifyParent

Вызов NotifyParent используется основной моделью данных для информирования динамического поставщика одной родительской модели, которая создается для преодоления парадигмы "нескольких родительских моделей".
IDynamicConceptProviderConcept::NotifyParentChange

Метод NotifyParent в динамическом поставщике концепций является обратным вызовом, сделанным основной моделью данных при выполнении статической манипуляции с одной родительской моделью объекта.
IDynamicConceptProviderConcept::QueryInterface

Метод IDynamicConceptProviderConcept::QueryInterface извлекает указатели на поддерживаемые интерфейсы объекта.
IDynamicConceptProviderConcept::Release

Метод IDynamicConceptProviderConcept::Release уменьшает количество ссылок для интерфейса объекта.
IDynamicConceptProviderConcept::SetConcept

Метод SetConcept в динамическом поставщике концепций является фактически переопределением метода SetConcept в IModelObject.

Замечания

концепции динамического поставщика

Хотя сама модель данных обычно обрабатывает управление ключами и концепциями для объектов, существует время, когда это понятие меньше идеала. В частности, когда клиент хочет создать мост между моделью данных и что-то другое, которое действительно динамически (например, JavaScript), может быть полезно взять на себя управление ключами и концепциями из реализации в модели данных. Поскольку базовая модель данных является одной и единственной реализацией IModelObject, это делается с помощью сочетания двух понятий: концепции поставщика динамических ключей и концепции динамического поставщика концепций. Хотя это было бы типично для реализации обоих или ни другого, нет никаких требований для такого.

Если оба варианта реализованы, необходимо добавить концепцию поставщика динамических ключей перед концепцией динамического поставщика концепций. Оба этих понятия являются особыми. Они эффективно переворачивают переключатель для объекта, изменяя его с "статически управляемым" на "динамически управляемый". Эти понятия можно задать только в том случае, если в объекте нет ключей и концепций, управляемых моделью данных. После добавления этих понятий в объект действие этого неизменяемо. Существует дополнительная семантическая разница в расширяемости между IModelObject, которая является динамическим поставщиком концепций и не является. Эти понятия предназначены для того, чтобы клиенты могли создавать мосты между моделью данных и динамическими языковыми системами, такими как JavaScript. Модель данных имеет концепцию расширяемости, которая несколько отличается от систем, таких как JavaScript, в том, что существует дерево родительских моделей, а не линейная цепочка, как цепочка прототипов JavaScript. Чтобы обеспечить лучшую связь с такими системами, IModelObject который является динамическим поставщиком концепции, имеет один родительский элемент модели данных. Этот родительский элемент модели данных является обычным IModelObject который может иметь произвольное количество родительских моделей, как обычно для модели данных. Все запросы к поставщику динамической концепции для добавления или удаления родителей автоматически перенаправляются в один родительский элемент. С точки зрения аутсайдера, он выглядит так, как будто динамический поставщик концепций имеет обычную цепочку стилей дерева родительских моделей. Реализация концепции динамического поставщика концепции является единственным объектом (за пределами основной модели данных), который учитывает промежуточный родительский элемент. Один родительский элемент может быть связан с динамической языковой системой, чтобы обеспечить мост (например, помещенный в цепочку прототипов JavaScript).

Требования

Требование Ценность
заголовка dbgmodel.h

См. также

Обзор модели данных отладчика C++