组件是通过包容和聚合来实现组件的复用、扩展和定制。
组件的复用同将一个组件包容在另外一个组件中是一样简单的。当需要对组件进行定制时,可以在调用其成员函数的前后加上自己的代码。
如果只是希望给组件增加新的接口,那么可以使用聚合的方法。聚合实际上是包容的—个特例。当外部组件聚合内部组件的某个接口时,外部组件可以将接口指针直接传给客户,而不需要重新实现此接口或转发相应的函数调用。
但并不是所有组件都是可以板聚合的。为此需要对组件的实现稍稍加以修改。此时内部组件需要两个不同的未知接口。其中一个未知接口要实现IUnknown接口的成员函数.而另外一个未知接口则可以在组件未被聚合的情况下将有关的函数词用转发给非代理未知接口;而在其被聚合的话况下则将其转发给外部组件的IUnknown接口。
包容和聚合为实现组件的复用和定制提供了一种极具鲁棒性的机制。这些技术使得在COM架构下不再需要实现继承,因为在组件架构下,客户必须同组件的实现完全隔离开。否则当客户所用的组件发生变化时,客户必须被重新编写、重新编译或重新链接。
好麻烦啊,有一点头绪了,不过还是很笼统啊,细节问题都来不及考虑,慢慢来,不能慌的。