这样,组件和客户就完全被分隔开了,而连接它们的只有接口以及一个CreateInstance的函数。
以上就是COM的基本原理了。当然,我前面也说了,COM其实是一套规范,它定义了很多标准,比如COM规定每个接口都必须继承于一个叫IUnknown的接口。我这里基本上没有提及它的这些标准,只是希望能通过对它进行一个简单的模拟来说清楚它的实现原理。下面就给出我模拟COM机制实现的一套COM的雏形,希望能对大家理解COM有帮助。
1、实现了组件ComponentB的ComponentDll.dll:
//Interface.h
//接口
class InterfaceA
{
public:
virtual void Fun1()=0;
virtual void Fun2()=0;
};
//Component.h
//组件(实现了接口InterfaceA)
class ComponentB: public InterfaceA
{
public:
virtual void Fun1()
{
printf("Fun1\n");
}