CoClasses とクラスファクトリ
COM の基礎:インデックス への移動
COM オブジェクトは,1 つまたは複数の COM インターフェースを実装するクラス CoClass のインスタンスです。COM オブジェクトは,自分のインターフェースによって定義されたサービスを提供します。
CoClass は,クラスファクトリと呼ばれる特殊な種類のオブジェクトによってインスタンス化されます。クライアントがオブジェクトのサービスを要求するたびに,クラスファクトリはその特定のクライアントのためのオブジェクトインスタンスを作成します。通常は,別のクライアントが同じオブジェクトのサービスを要求した場合に,クラスファクトリはその 2 番めのクライアントにサービスを提供する別のオブジェクトインスタンスを作成します。クライアントは,それをサポートするために自分自身を登録する実行中の COM オブジェクトにバインドすることもできます。
別のモジュールから外部的にインスタンス化するために,CoClass にはクラスファクトリとクラス識別子(CLSID: class identifier)がなければなりません。CoClass のこれらのユニークな識別子を使用すると,新しいインターフェースがそのクラスに実装されるたびに更新できます。新しいインターフェースは,(DLL を使用するときによく問題が起きるように)古いバージョンに影響を与えないでメソッドを変更または追加できます。
Delphi のウィザードは,クラス識別子の割り当て,およびクラスファクトリの実装とインスタンス化を行います。