<<
>>

Фабрика классов

Если клиенту нужен только один составной объект, то легче всего создать его с по­мощью метода СоСгеа1е1п$1апсе. Однако в некоторых случаях клиенту может пона­добиться несколько экземпляров объекта одного и того же класса.
В этом случае следует использовать так называемую фабрику классов (class factory) — специаль­ный объект, способный создавать экземпляры других объектов. Фабрики классов являются обычными COM-объектами, доступ к которым осуществляется через интерфейсы. Однако в отличие от обычных составных объектов, фабрика класса обязательно должна поддерживать интерфейс IClassFactory. В данном интерфейсе реализованы всего два метода.

? CoCreatelnstance — создает новый экземпляр класса, объекты которого может создавать данная фабрика. При вызове этого метода клиент должен указать IID, чтобы получить ссылку на нужный ему интерфейс. Клиент не передает этому методу CLSID в качестве параметра, так как класс объекта неявно определяет­ся самой фабрикой.

? LockServer — оставляет сервер загруженным в память после создания объекта. Так как фабрика классов является COM-объектом, то она поддерживает соб­ственный счетчик ссылок для учета количества использующих ее клиентов. Однако в ряде случаев этого счетчика недостаточно, чтобы сохранить сервер загруженным в память. В этих случаях для гарантированного продолжения ра­боты сервера и используется метод LockServer.

Для доступа к фабрике класса предназначен специальный метод CoGetClassObject библиотеки СОМ. Этой функции передается идентификатор CLSID класса объек­тов, которые будут создаваться фабрикой (но не CLSID самой фабрики!), а также IID интерфейса IClassFactory. Метод возвращает указатель на интерфейс. Затем путем вызова метода Createlnstance интерфейса IClassFactory создается экземпляр СОМ-объекта.

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Фабрика классов:

  1. Школьный класс
  2. Одиночки в классе
  3. ПЕРВЫЙ КЛАСС
  4. ПЯТЫЙ КЛАСС
  5. 6.3. Женщина высшего класса
  6. 5. Критическая теория и рабочий класс.
  7. Глава 13. INTJ «Компетентность + независимость = высший класс»
  8. Масса, демократия и рабочий класс
  9. СРАВНИТЕЛЬНАЯ СИСТЕМА КЛАССОВ
  10. ПОТЕНЦИАЛЬНЫЕ ВОЗМОЖНОСТИ ШКОЛЬНОГО КЛАССА КАК ГРУППЫ
  11. 2. Постарайтесь вникнуть в проблему «единственный ребенок – класс»
  12. Статья 54. Лишение воинского, специального звания, ранга, чина или квалификационного класса
  13. 40. Основные теоретические подходы в определении классов. Немарксистские подходы
  14. § 27 Усыновление по русскому закону. – Формы усыновления и его действие. – Приписка в податных классах. – Усыновление в прибалтийских губерниях.