COM中,和我们打交道的是接口,也就是说类对我们是隐形的,那么我们要做开发,要使用这些功能,我们只能通过接口,通过接口暴露出来的方法,COM是一种服务器端/客户端架构,服务器端定义了操作的法,客户端通过接口调用这些方法。下面的这幅图很能说明COM的结构:
言归正传,说这篇博文的主题QI,还记得上一篇我强调的,一个接口可以被多个类实现,而QI要解决的就是一个类实现多个接口的问题。在COM中,接口定义了方法,类实现了接口中定义的方法,而一个接口只能使用自己内部定义的方法,而不能越界,就好比一个班级一样,这个班级内有班长,有学习委员,有体育委员,每位干部各司其职,每一位干部负责自己职权范围之内的事情,各位干部相互协作,解决班级内的事情,这班级内的每一位干部就相当于一个接口,而这个班级就相当于实现了这些接口的类。当这个班级的一些事情需要班长处理的时候,我们就执行班长这个接口中定义的方法,当需要学习委员处理的话,我们再将执行权交给学习委员这个接口,这也就是接口之间的互相访问(Query Interface),通过这个我们大体上对QI有了感性上的认识,下面我们通过实例演示一下。