Современные технологии разработки программного обеспечения. Сивохин А.В - 41 стр.

UptoLike

41
begin TNewIntfComponentObject(Obj):=Self;
TNewIntfComponentObject(Obj). AddRef;
Result: =S_OK;
end;
end;
function TnewIntfComponentObject. AddRef :Longint;
begin
Inc(FRefCount);
Inc(Global_Object_Count);
Result: = FRefCount;
end;
function TnewIntfComponentObject. Release :Longint;
begin
Dec(FRefCount);
Dec(Global_Object_Count);
Result: = FRefCount;
if FRefCount=0 then Destroy;
end;
………………….
Реализация методов нового интерфейса INew Interfase;
………………….
initialization
Global_Object_Count:=0;
End.
Для генерации составных объектов в сервер должен быть включен
специальный класс фабрики объектов TClassFactory с интерфейсом
IclassFactory, в котором только два метода CreateInstance и
LockServer.
Метод CreateInstance обеспечивает создание объекта того класса, с
которым связан объект типа TClassFactory, а метод LockServer
используется при создании нескольких объектов для сохранения
сервера в памяти. Описание класса TClassFactory и реализация его
двух методов выглядит следующим образом:
type
TClassFactory=( IClassFactory)
private
FRefCount:Longint;
public
function CreateInstance(unkOuter:IUnknown;
const IID:TGID;varObj): HResult;override;
function LockServer(fLock:Bool): HResult;override;
end;
      begin TNewIntfComponentObject(Obj):=Self;
            TNewIntfComponentObject(Obj). AddRef;
            Result: =S_OK;
      end;
 end;
function TnewIntfComponentObject. AddRef :Longint;
  begin
    Inc(FRefCount);
    Inc(Global_Object_Count);
    Result: = FRefCount;
end;
function TnewIntfComponentObject. Release :Longint;
   begin
     Dec(FRefCount);
     Dec(Global_Object_Count);
     Result: = FRefCount;
       if FRefCount=0 then Destroy;
 end;
………………….
Реализация методов нового интерфейса INew Interfase;
………………….
initialization
 Global_Object_Count:=0;
End.
Для генерации составных объектов в сервер должен быть включен
специальный класс фабрики объектов TClassFactory с интерфейсом
IclassFactory,     в котором только два метода CreateInstance и
LockServer.
 Метод CreateInstance обеспечивает создание объекта того класса, с
которым связан объект типа TClassFactory, а метод LockServer
используется при создании нескольких объектов для сохранения
сервера в памяти. Описание класса TClassFactory и реализация его
двух методов выглядит следующим образом:
   type
       TClassFactory=( IClassFactory)
         private
           FRefCount:Longint;
         public
            function CreateInstance(unkOuter:IUnknown;
                const IID:TGID;varObj): HResult;override;
            function LockServer(fLock:Bool): HResult;override;
      end;
                                41