Factory design pattern

Factory is a design pattern. This design does not allow object allocation and memory management in client side. This is achieved by making the scope of the constructor and destructor as private. A private scope creates compilation error if new or delete operations are used in client's code and thus client side is restricted for memory management. This design provides a class with create function which can return a set of objects to the client. This function is called factory creator entry point. It takes some kind of unique id or name of the class and returns an instance to the client.

Factory in COM/DCOM

All COM/DCOM server follows factory design pattern. This design pattern does not allow object creation using new operator. Object creation and allocation is managed in server side. Object deallocation or free is managed by IUnknown::Release() call.

IClassFactory in COM

Every COM server implements a IClassFactory to fit this design. The creation of the object is abstracted inside COM server and client provides unique identity of the interface class to the server.

IClassFactory::CreateInstance() is the factory creator function it takes interface id /IID as input. Server then creates an instance of the class and returns the instance to the client.

class  IClassFactory : public IUnknown {
    virtual HRESULT __stdcall CreateInstance(
            /* [in] */ IUnknown  *pUnkOuter,
            /* [in] */ REFIID riid,   /* Unique ID of the interface */
            /* [out] */ void **ppvObject /* Output  pointer */
            ) = 0;

About our authors: Team EQA

You have viewed 1 page out of 67. Your COM/DCOM learning is 0.00% complete. Login to check your learning progress.

Learn on Youtube